LINUX.ORG.RU

Сообщения hlebushek

 

Причины завести блог

Форум — Talks

Думаю о том, чтобы завести себе блог. Минусов много вижу, плюсы тоже есть. Но может есть еще плюсы, о которых я не знаю? Не надо о негативном, только о профитах пожалуйста.

+ люди в интернете смогут обо мне что-то узнать

+ можно общаться с читателями

+ прокачивается писательский скилл

+ если он вырастет до приличных размеров, можно будет рубить бабло

+ даешь кому-нибудь ссылку на статью в своем блоге, и сразу типа уважаемой личностью становишься

P.S. Ляликс тут при том, что в интернете сайты, в том числе и блоги, на нем хостятся

 ,

hlebushek
()

Почему на андроиде под нормальные браузеры нет https everywhere

Форум — Mobile

Сабж. Приходится пользоваться ущербным фаерфоксом, который явно глючнее хрома и при воспроизведении видео тормозит.

Ну и вообще возможно ли под мобильный хром или другие браузеры сделать такое расширение?

Перемещено beastie из general

 , , ,

hlebushek
()

Друзья линуксоида

Форум — Talks

Откуда у линуксоидов берутся друзья - такие, с кем можно поговорить, приятно провести время, побухать, пригласить или получить приглашение куда-то, остаться с ночевкой, встретить новый год? И что делать, если такие до сих пор не появились?

Видимо буду очередной новый год встречать с мамкой дома.

 ,

hlebushek
()

TODO ПО с графом зависимостей

Форум — Talks

Хочу программу, а лучше онлайн сервис, ну желательно чтобы и на андроиде работал, чтобы можно было записывать там список дел, да не просто так, а с графом зависимостей. Есть такое?

 

hlebushek
()

Тема про лекарство от ВИЧ

Форум — Talks

Помню, энное время назад кто-то здесь создал тред чтобы ему помогли найти лекарство, которое принимают в течение двух что ли суток, чтобы не заразиться ВИЧем. Может кто дать ссылку на ту тему? В поиске ничего не обнаружил.

 

hlebushek
()

Security by Obscurity

Форум — Security

Так ли сабж плох? Я знаю и аргументы за, и аргументы против. Есть ли какая-нибудь статистика или еще какие авторитетные доводы за и против?

 ,

hlebushek
()

Как убыстрить андроид

Форум — Talks

Я задаю этот вопрос тут, потому что школьным советам установить всякие аналоги ccleaner'а на рандомных сайтах не доверяю. Как убыстрить андроид планшет? У меня nexus 9, после покупки был довольно шустрым, и хартстоун игрался более менее, а сейчас все намного хуже, а так как я не особо представляю, как в нем все работает, мне не ясно, как его сделать снова быстрым. И вообще непонятно, почему андроид становится лагучим еще быстрее, чем винда икспи становилась в свое время.

Приложения мессенджеры со всякими push уведомлениями - сильно ли они добавляют тормозов? Насколько я знаю, они реализованы через какой-то хитрый андроидный механизм. Я не уверен хочу ои и стоит ли избавиться от всяких вайберов и вконтактиков.

А что еще замедляет андроид? От просто большого кол-ва установленных программ он не должен тормозить, ведь правда? Есть ли вообще какие-то программы типа top, но по времени, чтобы узнать, что жрет рисунки.

 

hlebushek
()

Какие домашние развлечения лучше

Форум — Talks

Что лучше - играть в одну и ту же игру, смотреть сериалы по 9 сезонов, читать длиннющие серии книг или проходить/смотреть/читать разные книги, аниме, игры, кинцо, сериалы? Мне кажется, второе полезнее, но сложнее умственно.

 

hlebushek
()

Apple (c) Swift - быстрый и низкоуровневый

Форум — Talks

В одной видеолекции с курсеры лектор сказал, что в последнее время появились довольно низкоуровневые и быстрые type-safe языки, и в их числе он упомянул Swift. http://i.imgur.com/O0y6EUK.png Но я то про свифт что-то слышал год назад, и слышал, что он медленнее питона, вобрал в себя почти все существующие абстракции и позволяет использовать юникодные символы в названиях переменных. И как он может при этом быть быстрым? Он вообще компилируемый? Как он может быть быстрым и низкоуровневым со всеми существующими ништяками?

Это я о нем ничего не знаю, или автор курса услышал что-то про него и впихнул его в этот списочек просто так?

 , ,

hlebushek
()

Как написать x86 команду для вызова функции по адресу

Форум — Development

Есть одна laba1, которую я типа взламываю. laba1 это программа на C, в ней есть функция write_secret, и мне нужно подавая определенный ввод этой проге, добиться, чтобы эта функция вызвалась. Эта программа читает ввод с stdin, распознает ввод как число и пытается из массива указателей на функции выбрать функцию по индексу, равному этому числу. Функции write_secret в этом массиве нет, но там нет никаких проверок на out-of-bounds, короче я могу подобрать такое число, что программа сделает call (архитектура = x86) по адресу, который указывает на середину массива, читающегося с stdin. Соответственно мне надо записать какие-то инструкции через stdin, чтобы они вызвали функцию write_secret.

В описании этой лабы на курсере говорят, что туда надо впихнуть какие-то 4 числа по 3 байта вида \xEE\xEE\xEE\xEE (вместо EE что-то подставлять), чтобы когда процессор вызовет CALL по адресу этих байтов, чтобы они вызвали нужную функцию.

А, эти \x хрени это кажется шестнадцатиричные чиселки, каждое из двух шестнадцатиричных цифр, то есть каждое число это 16*16 = 256 значений, то есть каждое \xEE это 3 байта.

Я тут гуглил, смотрел в gdb и просто получал ассемблерный код и смотрел, как там программа обычно вызывает функции, она их вызывает например вот так.

https://pp.vk.me/c627617/v627617612/22fed/OCMWTdAVCHM.jpg

Там видно, что строчка tmp(); в ассемблере это MOV EAX, локальная переменная tmp и затем CALL EAX.

А если на этом скриншотике посмотреть в низ лево, то там увидите, что я с помощью гдб посмотрел, че там в цифрах записано в этих двух ассемблерных строчках:

0x8048808 // это MOV

0x804880b // это CALL

Ну короче если это перевести в формат по 4 16-ричных числа, то это [ ff d0 e9 3a ] [ 8b 45 f4 ff ]

И действительно, я нагуглил онлайн дизассемблер https://www.onlinedisassembler.com/odaweb/ туда вбил 8b 45 f4 ff и получил то же самое, что ассемблером написано в гдб - mov eax,DWORD PTR [ebp-0xc] а под ним получил .byte 0xff - то есть я так понимаю, что в этой команде нужен номер операции, и 2 каких-то числа, означающих номер регистра и какое-то там смещение наверное, а 4-ое число не нужно, поэтому там ff, который ничего не значит.

И еще я где-то нагуглил опкоды операции CALL: https://pp.vk.me/c627617/v627617612/22ff7/IBPjdUUmNUw.jpg значит CALL который начинается с 3 байтов ff это либо Call near, absolute indirect, address given in r/m16 ( и тут же такой же вариант с r/m32 в конце), либо Call far, absolute indirect, address given in m16:16 (либо опять же 32 в самом конце).

И вот видимо мне надо состряпать инструкции, чтобы вызвать функцию по адресу, известному мне (да, я знаю адрес write_secret - беру его из gdb

(gdb) print &write_secret
$4 = (void (*)(void)) 0x8048534 <write_secret>

Стоит заметить, что в коде на скриншотике fptr это указатель на функцию, принимающую void и возвращающую void.

А собственно почему мне так именно вызвать нужно? Ну в этом курсе там задают наводящие вопросы - сначала меня спрашивают, какое число надо подать на стандартный вход, чтобы с помощью переполнения буффера указатель, указывающий обычно на какую-нибудь функцию, указал на 65-ый байт переменной buf, которая собственно читается с stdin. Это я смог сделать. Но теперь мне надо придумать, какие байтики послать на 65-ый и следующие байты buf, чтобы когда процессор выполнял их, но выполнил эту самую функцию write_secret по адресу мне известному. И вот я пытаюсь понять, как в эти 65-ый и дальше байты засунуть CALL с адресом и наверное RET.

 , , ,

hlebushek
()

После многих лет проганья на C++ я узнал, что C массивы работают не совсем так, как я думал

Форум — Development

Я всегда думал, что в C массивы, определенные как-то так int array[13] = {0}; это на самом деле то же самое, что int*, то есть память выделяется на стеке, и где-то там есть локальная переменная array, указывающая на кусок памяти под 13 интов. И я думал, что единственная разница между массивом и указателем это то, что для массива переопределен оператор sizeof, и соответственно компилятор статически знает его размер.

Сегодня я учился работать в gdb, рассматривал там всякие значения и адреса переменных, и тут конфуз у меня случился. Есть переменная fptr ptrs[3] = { NULL, get_wisdom, put_wisdom };, остановился я в gdb на брейкпоинте, и пишу

(gdb) print ptrs
$12 = {0, 0x804857e <get_wisdom>, 0x8048627 <put_wisdom>}

И думаю: «хмм, странно, почему этот gdb по умолчанию печатает массив/указатель как массив? Пробую print /a ptrs - не получается. Ну ладно, думаю я, видимо в gdb так переопределен принт для массивов, определенных как массивы, и /a почему-то не работает, ну да и хрен с ним.

Пробую затем

(gdb) print &ptrs
$13 = (fptr (*)[3]) 0x804a0d4

и думаю: „ага, почему-то чтобы мне получить значение указателя ptrs, надо написать & - странно плохо сделали тупо, а теперь я хочу получить адрес собственно переменной ptrs, а не ее значение:

(gdb) print &&ptrs
A syntax error in expression, near `&&ptrs'.

А оно не работает. Ну тут я начинаю понимать, что что-то здесь нечисто, и возможно я неправильно понимаю C-шные массивы. Иду и создаю на тест программу:

#include <stdio.h>

int main() {
    int array[5] = {0};
    printf("array = %p\n", array);
    printf("&array = %p\n", &array);
};

запускаю ее, а оно выдает

array = 0xbffff530
&array = 0xbffff530

Мамочки, думаю я, так что же, когда в Си объявляешь массив как массив, то он на самом деле не указатель, там нет никакой переменной в памяти, хранящей этот адрес, а есть лишь кусок памяти под 13 или сколько там элементов на стеке, и компилятор статически знает его адрес и при индексации прибавляет к нему сдвиг? И соответственно можно получить лишь адрес этого куска памяти, и этот адрес нигде как переменная не хранится. И соответственно переприсвоить массиву указатель на что-то другое нельзя.

array = calloc(6, sizeof(int));
//a.c: In function ‘main’:
//a.c:7: warning: incompatible implicit declaration of built-in function ‘calloc’
//a.c:7: error: incompatible types in assignment

или

printf("&&array = %p\n", &&array);
// какая-то там ошибка про label'ы, видимо && в C для гоуту используется? не знаю

Вот так я узнал сильно новую для себя вещь про C. Надеюсь, еще через пару лет не найду какой-нибудь нежданчик например в аргументах функций как массивах (вместо указателей) или в чем-нибудь еще.

А вообще мне непонятно, нафиг они так сделали? По-моему если бы были только указатели, без массивов, то было бы проще и удобнее. Ну конечно какая-нибудь там конструкция типа sizeof пускай работает, чтобы можно было статически размер их получать.

 

hlebushek
()

Запустить в линуксе шелл-команду x86 или x86_64 машинным кодом

Форум — Development

Здравствуйте, как в линуксе запустить команду в оболочке, используя машинный код x86 или x86_64? Никакой роскоши вроде специальных загрузчиков, загружающих при старте бинарного файла всякие там библиотеки, нет.

P.S. тег syscall ставлю просто так, не знаю, он тут причем или не причем

 , , ,

hlebushek
()

Конструктор, одинаково работающий как с new, так и без

Форум — Development

Начал изучать js, прочитал там по прототипное наследование, про конструкторы, про то, как создавать объекты. И я уже кучу раз забывал писать new перед использованием конструктора. И вот я подумал, а нельзя ли создать такую функцию конструктор, чтобы она хоть с new, хоть без него, работала одинаково?

 

hlebushek
()

Заблоченный archive.org - последняя капля. Какой лучший VPN?

Форум — Talks

Я прохожу html5 курс на edx, и там показывают, как встраивать видео и всякими css их крутить, уменьшать, и все такое. Открываю я пример, а ничего не работает. Короче я поразбирался, и оказывается у нас в Россиюшке уже заблочили https://archive.org из-за каких-то видео про муджахедов. Мне знатно бомбануло от этого. Видимо, пора 24x7 через vpn сидеть. Посоветуете хороший vpn с маленьким пингом, недорого, чтобы айпишники не были забанены на всяких сайтах типа форчана?

 ,

hlebushek
()

Пример выпиливания кода или необычного поведения программы из-за undefined behaviour

Форум — Development

Привет. Я читал несколько статей о том, что undefined behaviour это страшно, что его нельзя игнорировать, потому что оптимизации компиляторов используют undefined behaviour и могут из-за него удалить часть кода, потому что она типа unreachable или что-то типа того. Короче я это в теории знаю, но не знаю сильно подробностей - хотелось бы примеры, как именно undefined behaviour приводит к тому, что оптимизации компилятора делают так, что код делает не то, что днище-программисту кажется, что он должен делать. Буду эти примеры в интернет пояснениях всяких undefined behaviour ситуаций показывать.

Еще мне интересно, считают ли компиляторы signed integer overflow за undefined behaviour и оптимизируют ли программу, учитывая тот факт, что это запрещено? Мне кажется, было бы наиболее разумно им делать вид, что это поведение вполне себе определено, и не выпиливать из-за этого код, потому что по-моему 90% C++ программистов, да и C программистов тоже не знают о том, что это UB.

 ,

hlebushek
()

Где взять частный виртуальный сервер за недорого

Форум — Talks

Нужен сервер подешевле, для хостинга моего говносайта и может быть еще каких-нибудь штук. Мощности не нужны. Нужна надежность, и чтобы компания через полгода не закрылась, сбежав с моими деньгами, как это случилось с моим предыдущим хостингом за 5 баксов в год.

 , ,

hlebushek
()

Почитать удаленное в толксах

Форум — Linux-org-ru

Как известно, самые интересные треды это те, которые удаляют из толксов. Где их можно почитать?

 

hlebushek
()

Аналог pastebin для целой папки

Форум — Development

Всякие C++ программисты часто задают вопросы об ошибках линковщика - что-то у них там не линкуется. При этом код весь не показывают. Как им показать целую структуру директорий с кодом? Я вот например аналога пастбина для такого не знаю.

 

hlebushek
()

Учебник или лекции по теории игр

Форум — Talks

Подскажите пожалуйста хорошие материалы для изучения теории игр. Можно на английском или русском. Плюс материалов на русском - легче читать. Плюс материалов на английском - англоязычные термины легче использовать в интернете.

 

hlebushek
()

Ленивость и многопоточность

Форум — Development

Говорят люди в интернете, мол используй функциональное программирование, отсутствие состояния, и никаких data race'ов не будет, и соответственно многопоточность будет достигаться легко.

Но тут я подумал о хаскелле и о его ленивости - а ведь ленивость приносит состояние. Допустим мы одну и ту же функцию вызываем из двух разных потоков. Вроде как в хаскелле ленивость кэшируется, и благодадря этому если вызвать одну и ту же функцию 2 раза, результат 2 раза считаться не будет. Но как с этим в многопоточных приложениях? Вдруг функция уже считается в одном потоке, а я ее вызову из другого потока? Чтобы это работало нормально, уже нужны какие-то механизмы синхронизации. А механизмы синхронизации это уже состояние.

Вот например в плюсах я ведь такого без изменяемого состояния сделать не смогу - там механизм синхронизации будет включать в себя что-то с состоянием, а в хаскелле значит тоже состояние есть, просто оно спрятано языком, и к нему нельзя получить доступ вручную.

 , , ,

hlebushek
()

RSS подписка на новые темы