Pull to refresh
20
0
Георгий Шепелёв @gshep

Пользователь

Send message

Если бы плотников нанимали так же, как программистов

Reading time3 min
Views297K

Интервьюер: Итак, вы считаете себя плотником?
Плотник: Всё верно. Это именно то, чем я занимаюсь.

Интервьюер: Как долго вы занимаетесь этим?
Плотник: Десять лет.

Интервьюер: Очень хорошо. А теперь я бы хотел задать вам несколько технических вопросов, чтобы оценить, насколько вы впишетесь в нашу команду. Договорились?
Плотник: Конечно, было бы неплохо.

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

Интервьюер: Да, я понимаю, но не могли бы вы подсказать мне, сколько у вас опыта именно с коричневыми? Ну, плюс-минус.
Плотник: Я действительно понятия не имею. С того момента, как дом построен, меня не волнует, в какой цвет его покрасят. Может, шесть месяцев?
Читать дальше →

Электронные деньги. Без купюр

Reading time7 min
Views27K
Нам в Эльбе довольно часто задают вопросы по типу «Я „упрощёнщик“, у меня есть электронный кошелёк в Яндекс.Деньгах, как его в доходах-расходах учитывать и перед налоговой отчитаться?».

Если погуглить, в Интернете можно найти массу информации и экспириенса в этой области. Однако мы хотим сэкономить ваше драгоценное время, и поэтому поделимся своими знаниями.

Читать дальше →

Как IT-фрилансеру стать предпринимателем. Часть 3

Reading time4 min
Views36K
Всем привет! Мы продолжаем серию постов о том, как IT-фрилансеру стать предпринимателем. Вы уже знаете, почему ИП лучше, чем ООО и как зарегистрировать ИП самостоятельно. Сегодня мы расскажем, что ждёт предпринимателя после регистрации.



Краткий путеводитель для начинающих предпринимателей от «Я люблю ИП»
Читать дальше →

Как IT-фрилансеру стать предпринимателем. Часть 2

Reading time4 min
Views56K
Всем привет! В предыдущем посте мы рассказали, зачем фрилансеру ИП и почему ИП лучше, чем ООО. Сегодня вы узнаете, как зарегистрировать ИП самостоятельно и что делать потом.



Всё для самостоятельной регистрации ИП на сайте «Я люблю ИП»
Читать дальше →

Как правильно приготовить Skype-4.3 под Linux

Reading time2 min
Views38K
Последнее добровольно-принудительное обновление программы Skype в среде его пользователей вызвало целую гамму чувств — от недоумения до негодования. Особенно, проблема коснулась Linux-сообщество. Верней, ту его часть, которая использует звуковую подсистему ALSA.

Это связано с тем, что в компании Microsoft почему-то решили, что единственно правильный путь — это использование PulseAudio, тем самым оставив без альтернативы огромное число тех, кто по каким-либо причинам не использует этот звуковой сервер.

Я отношусь к числу тех, кто не видит для себя смысла в использовании PulseAudio при нормально работающем ALSA и перенастраивать всю звуковую подсистему в угоду Skype желания не имею.

Оставим за скобками весь тот квест, который мне пришлось пройти в поиске решения, как же заставить стабильно работать предыдущую версию и что делать с внезапно онемевшим новым Skype. Решение, как всегда, оказалось простым до смешного. Тут я приведу краткое руководство, как заставить свежий Skype работать правильно.
Читать дальше →

Caesar III: game loop

Reading time27 min
Views69K
Если бы меня спросили, какая часть технической реализации игры «Цезарь» мне интересна больше других, я бы вспомнил о расчете одного «дня» городской жизни. Отдельные компоненты математической модели города тоже интересны в реализации, но эти «шестеренки» будут крутиться только в сборе. Большая часть игры проходит внутри «игрового цикла», в котором проводятся вычисления параметров компонентов, выполняются перемещения игровых объектов, создаются новые события и объекты. Если вам интересно узнать, как была устроена симуляция города в одной из лучших игр 1998 года — добро пожаловать под кат. Описания, псевдокод и схемы помогут вам лучше узнать об используемых алгоритмах.


Читать дальше →

Почему 0x00400000 является базовым адресом по умолчанию для EXE

Reading time3 min
Views46K
Базовым адресом по умолчанию для DLL является 0x10000000, но для исполняемых файлов это 0x00400000. Почему именно такое особое значение для EXE? Что такого особенного в 4 мегабайтах?

Это имеет отношение к размеру адресного пространства, отображаемого одной таблицей страниц в архитектуре x86, и такую конструкцию выбрали в 1987 году.

Единственным техническим требованием для базового адреса EXE является кратность 64 КБ. Но некоторые варианты базового адреса лучше, чем другие.

Цель выбора базового адреса состоит в минимизации вероятности, что модули будут перемещены. Это означает, что следует предотвратить столкновение 1) с другими объектами, которые уже в адресном пространстве (что и вызовет перемещение); 2) а также с объектами, которые могут появиться в адресном пространстве позже (форсируя их перемещение). Для исполняемых файлов избегать конфликта с объектами, которые могут появиться позже, означает уход из района адресного пространства, который может быть заполнен библиотеками DLL. Поскольку сама операционная система помещает файлы DLL в старшие адреса и базовым адресом по умолчанию для несистемных DLL является 0x10000000, то базовый адрес для EXE должен быть где-то младше 0x10000000, и чем младше, тем больше места останется до того, как вы начнёте конфликтовать с библиотеками. Но насколько низко нужно заходить?
Читать дальше →

Как ускорить контейнер: тюнингуем OpenVZ

Reading time9 min
Views16K
image
OpenVZ — это OpenSource-реализация технологии контейнерной виртуализации для ядра Linux, которая позволяет запускать на одной системе с ядром OpenVZ множество виртуальных окружений с различными дистрибутивами Linux внутри. За счет своих особенностей (контейнерная виртуализация идет на уровне ядра, а не железа) по ряду показателей производительности – плотности, эластичности, требованиям к размеру оперативной памяти, скорости отклика и т.д. – она работает лучше, чем другие технологии виртуализации. Например, тут можно посмотреть сравнения производительности OpenVZ с традиционными системами гипервизорной виртуализации. Но, помимо этого, в Linux и OpenVZ есть и масса вариантов тонкой настройки.
В данной статье мы рассмотрим нетривиальные варианты настроек контейнеров ядра OpenVZ, которые позволяют улучшить производительность всей системы OpenVZ.
Читать дальше →

200 микрокомпьютеров за 3 часа, или мелкосерийное производство микроэлектроники в Шэньчжэне (на примере проекта VoCore)

Reading time5 min
Views131K


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

С помощью данного поста мы с вами побываем на реальной фабрике (одной из нескольких сотен в городе), которая занимается производством микро-электроники в городе Шэньчжэнь. Увидим этапы производства — на наших глаза будет происходить превращение идеи из схем и файлов — в готовую для использования плату — микрокомпьютер.

Этот микрокомпьютер — это проект VoCore, про который мы совсем недавно рассказывали — микрокомпьютер размером с монетку (25x25 мм) с Wi-Fi и Linux (OpenWRT).

Ну что ж, рабочие нас заждались, начнём.
Читать дальше →

Немцы изобрели способ печатать гибкие сенсорные дисплеи на обычном принтере

Reading time2 min
Views97K
Не спешите выбрасывать свои старые струйные принтеры: в 3D на них, конечно, не попечатаешь, но зато можно поэкспериментировать с технологией печати гибких сенсорных дисплеев, представленной на прошедшем в Гонолулу (Гавайи, США) технологическом симпозиуме.



Изобретатели из Саарского университета и Института информатики общества Макса Планка (Германия) показали, как можно печатать гибкие тонкие одно- или двухсторонние цветные сенсорные дисплеи практически на любом материале: дерево, мрамор, кожа, металл и, собственно, бумага. В отличие от обычного производства гибких/сенсорных дисплеев, не требуется сложное оборудование: их можно печатать практически в любых условиях, включая домашние, и с помощью самого простого оборудования вроде струйного принтера и стандартных визуальных редакторов.
Читать дальше →

Что делать, если у банка отозвали лицензию?

Reading time5 min
Views108K

В последнее время всё чаще появляются новости о том, что Центробанк отозвал лицензию у какого-нибудь банка. Иногда это происходит внезапно и неожиданно, а бывает, что до этого в интернете уже проскальзывал слух. Когда нужно верить плохим новостям и бежать менять банк и, самое главное, что делать, если вы остались без банка — не будем тянуть с лиричными вступлениями и расскажем прямо сейчас.
Читать, пока еще не поздно

Настройка стартового экрана Vim

Reading time3 min
Views19K

Вступление


Стартовый экран Vim содержит лишь информацию о том, как начать читать документацию по этому редактору и как правильно из него выйти. Ведь, как известно, многие инструменты имеют крутую кривую входа, а Vim к тому же еще и крутую кривую выхода. Те, кто уже научились выходить из Vim, наверняка захотят сделать стартовый экран более информативным и полезным. Чем мы и займемся.
Читать дальше →

Руководство по Google Hangouts для Debian/Ubuntu Linux (а также Mac OS X и Windows)

Reading time6 min
Views44K
В свете последних событий, связанных со Skype (блокировка «старых» версий клиента, насильное обновление клиентов на всех платформах, откровенно сырая новая версия клиента для Linux), решил поделиться с сообществом успешным опытом использования Google Hangouts для коллаборации (командной разработки ПО, парного программирования) и написать универсальное руководство (tutorial, how-to) для Debian/Ubuntu Linux, а также Mac OS X и Windows, собрав всю необходимую и полезную информацию воедино.

Эта статья для тех, кто в поиске полноценной альтернативы Skype для большинства современных платформ и в первую очередь для Linux.
Читать дальше →

Как производят PLA для 3d-принтеров. Репортаж из цеха

Reading time3 min
Views88K
Пистолетный выстрел послужил сигналом создать бизнес.

Дабы развеять мифы о том, что катушки с пластиком для 3d-принтеров растут на деревьях можно только покупать и перепродавать, а так же о том, что достаточно купить «все-в-одном» экструдер и начать свой бизнес, я отправился на разведку к московским производителям ABS и PLA (и HIPS). Действительно, я попал в профессиональный цех с промышленным оборудованием, с измерительными и управляющими приборами высокой точности, высокими стандартами к чистоте (ибо процесс производства очень ответственный) и общительными основателями (готовыми делиться знаниями с любознательной и думающей аудиторией), у которых куча технокреативных идей и планов по захвату мира рынка. (+5 к уровню национальной гордости)

Как рассказал мне со-основатель компании: «Сначала мы увидели распечатанный нож для фруктов, и очищенный им от кожуры апельсин, затем шоком было видео с пистолетом Коди Уилсона и понеслось...»
В то время когда я написал на Хабре первые 2 статьи про 3d-принтеры (весна 2013), эти ребята уже начали создавать бизнес по производству пластика. Интересно, что и мне и им пришла в голову аналогичная идея, как можно дополнить поговорку, мол, человек может бесконечно смотреть на огонь, воду, как работает другой человек и на то, как печатает 3d-принтер.




Полилакти́д (ПЛА, PLA) — биоразлагаемый, биосовместимый, термопластичный, алифатический полиэфир, мономером которого является молочная кислота. Сырьем для производства служат ежегодно возобновляемые ресурсы, такие как кукуруза и сахарный тростник. Используется для производства изделий с коротким сроком службы (пищевая упаковка, одноразовая посуда, пакеты, различная тара), а также в медицине, для производства хирургических нитей и штифтов.

image
Под катом — основные этапы превращения сырья в катушки с PLA для 3d-принтеров
Читать дальше →

ESP8266: Что внутри «народного wi-fi»?

Reading time3 min
Views301K


Наша первая статья о Wi-Fi-чипе ESP8266 была тепло встречена хабра-сообществом. Не смотря на то, что содержала мало конкретной информации. Тому была веская причина — NDA, подписанное нами для получения SDK от производителя решения, компании Espressif. Именно поэтому мы просто рассказали, «вот, есть такое решение». Чтобы заинтересованные имели возможность обратить внимание.

На днях мы (проект COOLRF, не забудьте подписаться на наше ВКонтакт-сообщество, если вы еще не состоите в нём) получили разрешение производителя чипа на публикацию в наших статьях информации, ранее попадавшей под условия соглашения о неразглашении. Всех, кого интересовали подробности — welcome под кат.
Читать дальше →

Монтаж накруткой. Технология

Reading time5 min
Views186K

Раньше, чтобы провести отладку электронной схемы, я применял макетные платы, навешивал соплей, для соединений применял монтажный провод и обрезки выводов резисторов. Трассировку делал на ходу, часто с ошибками, что иногда приводило детали в негодность. У такого монтажа много проблем: тяжело менять схему, провода отваливаются от вибрации, сложно сводить несколько проводов в одной точке и т.д.

Есть и другие способы макетирования, но сегодня я напомню о монтаже накруткой [1, 2] — технологии, проверенной временем, удобной и надежной для макетирования и прототипирования. Более того, по этой технологии можно создавать конечные устройства, которые будут надежно работать много лет.

Читать дальше →

История про realloc (и лень)

Reading time9 min
Views48K

Простой макрос


Все началось с простого макроса: (приблизительный код)
#define ADD_BYTE(C) do {            \
  if (offset == capa) {             \
    if (capa < 16) {                \
      capa = 16;                    \
    } else {                        \
      capa <<= 1;                   \
    }                               \
    buffer = realloc(buffer, capa); \
    assert(buffer != NULL);         \
  }                                 \
  buffer[offset++] = (C);           \
} while(0)


Для тех, кто не знаком с языком программирования C, поясню: этот простой макрос добавляет байт «C» в динамически выделяемый буфер (buffer), размер которого (в байтах) равен capa. Следующая позиция для записи определяется при помощи параметра offset. При каждом заполнении буфера происходит двукратное увеличение его объема (начиная с минимального размера в 16 байт).

Мы добавляем байты в динамический буфер — это одна из наиболее распространенных операций практически в любой программе (для работы со строками, массивами и т. п.).

Но как понять, насколько эффективна стратегия перераспределения?
Читать дальше →

Исследуем китайские роутеры на RT5350

Reading time7 min
Views140K
Однажды, lolipop купил роутер на алиэкспрессе. Да не простой роутер, а очень компактный и дешевый, с 2 Ethernet-портами, USB, да еще и от фирмы, которая в начале 2000-х продавала свои mp3-плееры на территории РФ: Nexx WT1520H.
image
Стандартная прошивка, как и почти всегда, была скудная, и, конечно же, хотелось заменить ее на что-то более вменяемое. Но вот незадача — никаких альтернативных прошивок под роутер нет, и прошить непонятно как, т.к. никакие другие прошивки не принимались через веб-интерфейс, заголовок прошивки я раньше такой не видел, да и binwalk ничего в ней не находил, стало быть, она зашифрована:
00000000  32 33 35 30 6b d9 39 00  00 00 0e 02 00 00 00 00  |2350k.9.........|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 3e 19 53 c5  |............>.S.|
00000020  63 f5 51 9f 82 74 2d 03  2e 2f 1f 32 9c 4a 93 96  |c.Q..t-../.2.J..|
00000030  15 82 23 d0 b2 7e d7 1b  13 c3 1b 1f 06 fa f8 e0  |..#..~..........|
00000040  bb 43 9b c6 ee fc 4b 7a  e6 50 71 2b f4 f3 95 c3  |.C....Kz.Pq+....|
00000050  63 d0 a3 9c 92 2e 16 c6  19 1c 4a 93 cb 95 c3 63  |c.........J....c|
00000060  d2 9b 1a f5 2e 16 c6 19  1c 4a 93 f9 68 3c 9c 73  |.........J..h<.s|
00000070  14 63 d5 10 5e d3 6b 25  2b c2 2e 07 eb 85 73 25  |.c..^.k%+.....s%|
00000080  9b 6b c0 f2 d8 9b cf 65  56 ac a9 c2 28 61 dd 55  |.k.....eV...(a.U|
00000090  18 a4 5b e9 ba 11 93 ec  30 76 4f 40 c1 f0 7c cb  |..[.....0vO@..|.|
000000a0  36 d3 b3 93 fe 3d 6b 10  66 fa 43 39 f2 f6 c0 91  |6....=k.f.C9....|

lolipop слил данные с флешки через программатор, и мы начали в них ковыряться.
Читать дальше →

Патчим процессы в Linux на лету при помощи GDB

Reading time11 min
Views15K
Техники перехвата функций в Linux хорошо известны и описаны в интернете. Наиболее простой метод заключается в написании динамической библиотеки с «функциями-клонами» и использовании механизма LD_PRELOAD для переопределения таблицы импорта на этапе загрузки процесса.

Недостаток LD_PRELOAD в том что необходимо контролировать запуск процесса. Для перехвата функций в уже работающем процессе или функций отсутствующих в таблице импорта можно использовать «сплайсинг» — запись команды перехода на перехватчик в начало перехватываемой функции.

Также известно, что в Python имеется модуль ctypes позволяющий взаимодействовать с данными и функциями языка Си (т.е. большим числом динамических библиотек имеющих Си интерфейс). Таким образом ничто не мешает перехватить функцию процесса и направить её в Python метод обёрнутый в С-callback с помощью ctypes.
Читать дальше →

Меня попросили взломать программу на собеседовании. Часть 2

Reading time10 min
Views71K
Это перевод второй части публикации «Меня попросили взломать программу на собеседовании». Оригинальный текст можно найти здесь.

Предисловие


Привет, ребята. Если вы не знаете, что означает «Часть 2», пожалуйста прочитайте Часть 1.
Для начала я хотел бы поблагодарить всех прочитавших первую часть, поскольку в итоге я получил массу отличных отзыв.

Так же я бы хотел устранить некоторые недопонимания:
  1. Я более не работаю на данную компанию, я переехал в Барселону;
  2. Я проходил данное интервью почти год назад;
  3. Программы я взламывал в облаке ($5 тариф, да, вы угадали компанию), поэтому я не считаю, что использование root@'a является проблемой — я могу пересоздать новую среду за пару секунд. В итоге я все же переключился на пользователя eren@, так как gdb не принимал рутовые инит файлы.
  4. Не забудьте прочитать окончание статьи — вам обязательно понравится!

Поехали


На этот раз мы будем работать не с дверью, а с ядерной ракетой.
Читать дальше →

Information

Rating
Does not participate
Location
Ульяновск, Ульяновская обл., Россия
Registered
Activity