Pull to refresh
14
0
Алексей Шумкин @ashumkin

системный разработчик

Send message

Бюджетные VDS для обучения и разработки

Reading time4 min
Views61K
Преветствую, Хабр!

Вступление

Многие из нас сталкивались, сталкиваются или будут сталкиваться с выбором VDS сервера по принципу дешево и сердито. Зачем такие серверы нужны? Скорее всего наибольшая польза будет для новичков, т.к. можно «пощупать» разное ПО, поэкспериментировать с различными конфигурациями и рецептами. Потестировать свои способности и раскрыть новые горизонты. Фрилансеру создать необходимое окружение для очередного заказа и развернуть там девелоперскую версию проекта, доступ к которой можно иметь всегда и везде как фрилансеру так и заказчику.
Читать дальше →
Total votes 39: ↑30 and ↓9+21
Comments66

LVM — это просто!

Reading time4 min
Views625K
Собственно, хочется просто и доступно рассказать про такую замечательную вещь как Logical Volume Management или Управление Логическими Томами.
Поскольку уже давно пользуюсь LVM-ом, расскажу что он значит именно для меня, не подглядывая в мануалы и не выдёргивая цитаты из wiki, своими словами, чтобы было понятно именно тем кто ничего о нем не знает. Постараюсь сразу не рассказывать о всяческих «продвинутых» функциях типа страйпов, снапшотов и т.п.
Читать дальше →
Total votes 58: ↑54 and ↓4+50
Comments75

Работа с утилитой mdadm. Изменение типа массива, chunk size, расширение

Reading time5 min
Views71K

Введение


К написанию данной статьи меня побудило отсутствие внятной информации на русском языке по работе с утилитой mdadm, реализующей RAID различных типов в ОС linux. В принципе, основные положения работы данной утилиты освещаются достаточно подробно. Почитать об этом можно, например, раз, два, три.

Преобразование RAID1 в RAID5


Основным посылом было преобразование RAID1, созданного при установке Ubuntu массива из двух дисков к RAID5. Начал я, как водится с гугления, и набрел на более раннюю статью на Хабре К сожалению, протестированный на виртуальных машинах, этот способ гарантировано убивал возможность загрузки с корневого раздела. С чем это связано, с более новой версией mdadm, или со спецификой тестирования (корневой раздел на массиве, требуется работа с live CD) выявить не удалось.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments20

Windows + Tmux + Cygwin

Reading time2 min
Views45K
Добрый день, хабр!

Я давно плотно работаю с Linux системами, но в качестве десктопа предпочитаю Windows. Но для комфортной работы иногда нужно постараться.

Сегодня я хочу поделится опытом и впечатлениями о том как я пытался найти замену Tmux под cygwin и как я в конце концов победил Tmux и скомпилировал его под Cygwin + Windows. Кому интересно — прошу под кат.

image
Читать дальше →
Total votes 51: ↑41 and ↓10+31
Comments21

Vim magic — Visual mode

Reading time2 min
Views20K
Немножко о режиме выделения для тех, кому лень проходить vimtutor, или тех, кто ещё сомневается в том, что Vim это действительно удобно.

Режим выделения в Vim это одна из тех грандиозных вещей (наряду с *, = и text-objects), которые делают этот редактор особенно удобным. Как вы уже знаете, в Vim есть режим Visual, в котором можно выделять текст, чтобы потом с выделением что-нибудь делать, например, засунуть его в регистр, отформатировать, заменить в нем что-нибудь регулярным выражением или ещё что-нибудь. Чтобы войти в этот режим, нужно нажать v, а потом перемещать курсор обычными командами, передвигающими курсор в обычном режиме, расширяя таким образом область выделения.

Режимов выделения есть несколько: обычный, построчный и блочный. Обычный включается командой v и выделяет текст от символа до символа. Построчный включается командой V (Shift+v) и выделяет строки целиком. Блочный включается командой Ctrl+V (под Windows может включаться Ctrl+Q, если Ctrl+V занято под вставку текста из клипборда) выделяет вертикальный блок текста (не захватывает начала и концы строк в середине выделения, как это происходит в обычном режиме).

А теперь немного особой, Vimовской магии
Total votes 36: ↑28 and ↓8+20
Comments14

Vim magic — Регистры

Reading time4 min
Views16K
Про регистры в Vim уже писали в предыдущих постах, но я решил собрать инфу воедино и немного дополнить. Прочитав эту статью, вы станете настоящими мастерами копи-пастинга (в хорошем смысле этого слова) :)

Сложно представить себе работу в редакторе без использования операций скопировать/вырезать/вставить. Vim предоставляет очень мощные средства, для этого. Итак, регистры — это то, куда Vim складывает те куски текста, которые вы копируете с помощью y или удаляете с помощью c или d, но не только. Есть ещё несколько специальных регистров, куда Vim помещает, например, текст, который вы искали с помощью / или текст, который вы drag-n-dropнули в окно редактора. Чтобы указать, что вы хотите скопировать или удалить текст в определенный регистр, нужно указать его имя перед командой. Например, «ayy скопирует строку целиком в регистр »a. Но не во все регистры можно писать, некоторые из них только для чтения (и даже есть один только для записи).

Ещё немного особой, Vimовской магии, связанной с регистрами, для затравки, чтобы было не лень дочитать до конца:
— Vim хранит небольшую историю удалений, так что вы можете вставить удалённый ранее текст, даже если после этого вы удаляли или копировали другой текст.
— Vim предоставляет вам 26 именованных «буфера обмена», в которые можно надолго складывать текст и он не будет потерян при операциях копирования или удаления.
— Vim может копировать или удалять текст, не затирая содержимое регистра, а дополняя его.

Овладеть особой магией регистров
Total votes 1: ↑1 and ↓0+1
Comments14

Vim для программиста

Reading time2 min
Views15K
Любимый многими редактор Vim не является IDE. Однако в нём реализовано много замечательных возможностей, облегчающих работу с кодом.

Обычно цикл работы с кодом сводится к поправить код-скомпилировать-поправить код-скомпилировать-… В Vim есть средства, заточенные специально под этот процесс.
Выглядит это так:
Total votes 20: ↑16 and ↓4+12
Comments46

Перехват системных вызовов в linux под x86-64

Reading time3 min
Views6.4K

Введение


В интернете опубликовано множество статей по перехвату системных вызовов под x32. В рамках решения одной задачи появилась необходимость в перехвате системных вызовов под архитектурой x86-64 при помощи загружаемого модуля ядра. Приступим:
Total votes 56: ↑49 and ↓7+42
Comments14

Основы использования бранчинга для параллельной разработки

Reading time9 min
Views36K
Вступление

Как справедливо заметил Fred Brooks, серебряной пули, способной поразить зверя разработки программного обеспечения, не существует. Пока возникают новые требования, идеи и находятся новые баги, программы живут и изменяются. Путь, который проходит код от версии к версии, может быть крайне сложен и извилист. К его созданию причастно много людей: разработчики, тестировщики, бизнес-аналитики, заказчики и т.п. Несмотря на то, что существует много разных видов разработки – аутсорсинг, продуктовая разработка, open-source и т.п., проблемы, стоящие перед командой, остаются примерно одинаковыми. Программное обеспечение – вещь сложная, потребитель хочет получить его как можно быстрее (и дешевле). Качество при этом должно быть приемлемым. Перед командой разработки стоит серьезная задача – наладить эффективное взаимодействие. Одним из самых главных средств коллаборации внутри команды разработчиков является сам код, который они пишут.

Читать дальше →
Total votes 37: ↑31 and ↓6+25
Comments72

Модификация стоковых прошивок для Android. Часть 1

Reading time9 min
Views288K
Здравствуй Хабр!

Несколько лет назад, когда я впервые познакомился с Android, я услышал от своего коллеги по работе, что Android предусматривает возможность установки модифицированных или самодельных прошивок. Признаться, тогда я был далек от этого. И даже пол года назад меня едва интересовали подобные вещи. Глубоко в душе, я был уверен: то, что делает производитель, уже предназначено для нормального использования.

Каково же было мое разочарование, когда я приобрел телефон из поднебесной, где заводскими настройками было запрещено использование Google, Skype, Facebook и других приложений. В принципе, на некоторые вещи можно было закрыть глаза, но когда мой телефон не подразумевал использование учетной записи Google — я взял с себя обещания обязательно разобраться во что бы мне это не стало.

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

В данной серии статей пойдет речь о том, как делать reverse программирование для Android, реализовывать патчи, твики и моды.
Читать дальше →
Total votes 93: ↑87 and ↓6+81
Comments31

Немного о технологии Z-Wave

Reading time17 min
Views103K
В данной статье хотелось бы осветить немного внутренностей протокола Z-Wave. Учитывая, что владелец протокола компания Sigma Designs (поглотившая Zensys) просит подписывать NDA перед раскрытием особенностей реализации, а часть вообще никому не показывает, подробных данных а сети не найти. Я не собираюсь рассказывать здесь слишком много, чтобы не нарушить подписанный NDA. Надеюсь, и данная информация окажется полезной и сподвигнет кого-нибудь занятся разработкой собственных железок на этом протоколе. Итак, начнём!
Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments34

Мобильное приложения для управления умным домом на базе Z-Wave с помощью OpenRemote

Reading time8 min
Views84K

Не так давно был представлен Z-Wave модуль для Raspberry Pi — RaZBerry, который превращает мини-компьютер в полноценный контроллер умного дома. Управление Z-Wave сетью осуществляется с помощью web-интерфейса, использующего HTTP/JavaScript API. Используя JavaScript можно создать набор функций для автоматизации (включение/выключение света, проверка температуры, опрос датчика движения и др.), которые затем можно выполнить, послав HTTP запрос.

Продукт компании OpenRemote с одноименным названием позволяет создавать мобильные приложения для умного дома без программирования, при этом в одном приложении могут использоваться разные технологии: Z-Wave, KNX, X10, ZigBee, управление компьютером по ssh и др.

OpenRemote это сервер выполняющий любые команды и конструктор интерфейсов в котором вы создаете кнопки, переключатели, надписи и др. и этим элементам уже назначаете команды, в нашем случае это HTTP запросы на выполнение JavaScript функций на сервере Z-Wave.

Далее я по пунктам расскажу как создать пульт управления умным домом для iPhone и Android! А вот так будет выглядеть наше приложения, когда мы закончим:


Под катом много картинок.
Будет интересно!
Total votes 52: ↑50 and ↓2+48
Comments40

Видеоклип на песню Дэвида Боуи, снятый на борту МКС, стал хитом Youtube

Reading time1 min
Views40K
Канадский астронавт Крис Хэдфилд, который на днях благополучно вернулся с Международной космической станции, за время своего пребывания на борту успел стать одним из самых популярных и узнаваемых астронавтов — его видеоролики о подробностях космического быта набирали миллионы просмотров, число подписчиков его аккаунта в Твиттере тоже дошло почти до миллиона. Кроме всего прочего, он неплохо поёт и играет на гитаре. За несколько дней до возвращения на Землю он опубликовал первый в истории видеоклип, целиком снятый в космосе. К делу он подошёл ответственно — клип на песню Дэвида Боуи «Space oddity» снят, смонтирован и озвучен вполне профессионально.


Читать дальше →
Total votes 143: ↑122 and ↓21+101
Comments54

Ежедневная работа с Git

Reading time40 min
Views879K
Я совсем не долго изучаю и использую git практически везде, где только можно. Однако, за это время я успел многому научиться и хочу поделиться своим опытом с сообществом.

Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
  • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
  • будет ли менеджер и заказчик удовлетворён этим процессом?
  • будет ли легко работать разработчикам?
  • смогут ли новички быстро включиться в процесс?
  • можно ли процесс относительно легко и быстро изменить?


Конечно, я попытаюсь рассказать обо всём по-порядку, начиная с основ. Поэтому, эта статья будет крайне полезна тем, кто только начинает или хочет разобраться с git. Более опытные читатели, возможно, найдут для себя что-то новое, укажут на ошибки или поделятся советом.

Далее очень много букв случайным образом превратились в пост.
Total votes 200: ↑194 and ↓6+188
Comments44

Изучаем отладчик, часть первая

Reading time24 min
Views156K
Я думаю, вы знаете, что взлом программного обеспечения производится не какими-то мистическими «хакерами» – его осуществляют такие же программисты, как и большинство читающих данную статью. При этом они пользуются тем же инструментарием что и сами разработчики ПО. Конечно, с оговорками, поскольку по большей части инструментарий достаточно специфичен, но, так или иначе, при анализе ПО используется отладчик.

Так как большинство моих статей ориентированы на людей, интересующихся применением защиты в своем ПО, я решил, что подача материала с конкретными кусками кода защиты (наподобие опубликованных ранее) только запутает читателя. Гораздо проще начать от азов и потихоньку давать новый материал на уже готовой базе.

Поэтому в данной статье будет рассмотрен один из базовых инструментов программиста – отладчик.
Цели статьи: рассмотреть основные методы работы с отладчиком, показать его расширенные и редко используемые возможности, дать понимание работы механизмов отладчика на примерах и рассмотреть некоторый набор методов противодействия.

Объем статьи получился неожиданно большим, поэтому я разбил ее на три части:

  • В первой части будут рассмотрены возможности интегрированного в IDE Delphi отладчика, даны рекомендации по наиболее оптимальному его использованию и общие советы по конфигурации среды. Материал данного раздела предназначен как начинающим разработчикам, так и более подготовленным специалистам.
  • Во второй части статьи будет рассмотрена изнаночная сторона работы отладчика на примере его исходного кода, подробно рассмотрены механизмы, используемые им при отладке приложения, показаны варианты модификаций памяти приложения, производимые отладчиком во время работы.
  • В третьей части статьи будет рассмотрено практическое использование отладчика на примере обхода защиты приложения, использующего некоторый набор антиотладочных трюков.

Собственно, приступим.
Читать дальше →
Total votes 36: ↑27 and ↓9+18
Comments13

Изучаем отладчик, часть вторая

Reading time45 min
Views24K
В первой части статьи были рассмотрены некоторые нюансы работы с интегрированным отладчиком Delphi — не все конечно, но наиболее необходимые разработчику. Теперь задача выглядит несколько иначе: рассмотрим его работу изнутри на примере его исходного кода. Для того чтобы не сильно утомлять вас описанием API функций и не разжевывать все этапы отладки, описывать его работу я буду на примере класса TFWDebugerCore. Часть не особо важных моментов я опущу, при желании вы их сможете уточнить просмотрев код данного класса.

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

Если же вы ранее никогда не сталкивались с самостоятельной реализацией отладчика, но заинтересованы в ней, то как минимум вы должны начать с данной ссылки: Debugging and Error Handling
По ней вы сможете узнать об основных аспектах отладки, как-то структурной обработке исключений, работой с отладочной информацией, минидампами. Работой с образом исполняемого файла, заголовками, секциями, картой памяти процесса, что такое RVA и VA и прочее-прочее.
Но это только если захотите разобраться во всей этой кухне.

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

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

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

Читать дальше →
Total votes 31: ↑26 and ↓5+21
Comments4

Изучаем отладчик, часть третья

Reading time22 min
Views29K
Что такое отладчик, как им пользоваться и как он реализован, после прочтение первой и второй части статьи, вы знаете. В заключительной части статьи попробуем рассмотреть некоторые методы борьбы с отладчиком, на основе знаний о принципах его работы. Я не буду давать шаблонный набор антиотладочных приемов, благо при желании все это можно найти на просторах интернета, попробую это сделать немного другим способом, на основе некоего абстрактного приложения, у которого буду расширять код защиты от самой простейшей схемы до… пока не надоест :)

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

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

Вот что-то такое мы и рассмотрим, только в очень упрощенной форме.
Читать дальше →
Total votes 41: ↑35 and ↓6+29
Comments5

Galaxy Note 2: Альтернативные прошивки. Обзор Cyanogen 10.1 и MIUI

Reading time6 min
Views76K
image image image

Альтернативные прошивки — важная часть использования любого устройства. Кого-то не устраивает набор «лишнего» софта, поставляемый вместе с устройством, кто-то хочет большого количества настроек, кто-то жаждет красивого интерфейса, не похожего на стандартный андроид. В данном обзоре я расскажу о процессе прошивки, покажу и расскажу о основных отличиях двух прошивок(CyanogenMod и MIUI), и немного о настройках кастомного ядра.
Содержание:
Поехали!
Total votes 74: ↑48 and ↓26+22
Comments56

DraftSight — бесплатный аналог AutoCAD (в том числе и для Linux)

Reading time2 min
Views186K
draftsight logoДоброго времени суток, хабр!

Сегодня я хотел бы рассказать о прекрасном аналоге САПР AutoCAD под названием DraftSight, работающем под Linux (Ubuntu; Fedora, Suse или Mandriva; ArchLinux и пр.), Windows (x86, x86_64) и MacOS.
Данная САПР разработана компанией 3DS, широкоизвестной в узких кругах такими продуктами как CATIA, SIMULIA и др.

На хабре про эту САПР было упомянуто только в одной статье, да и то без должного уважения.

Основные возможности:

  • позволяет создавать и редактировать файлы формата DWG (родной формат AutoCAD'а);
  • интерфейс очень напоминает AutoCAD R14, так сказать классический вариант;
  • САПР доступна бесплатно;
  • имеется платная версия Premium для предприятий и для преподавателей.


Основные отличия платной версии от бесплатной (взято с сайта разработчика):

  • Поддержка по телефону и электронной почте
  • Сетевая лицензия
  • Модуль оперативной помощи при внедрении позволяет большим группам пользователей устанавливать и обновлять DraftSight.
  • Доступ в DraftSight APIs и их обновлениям.
  • Обновление продуктов, главные релизы и пакеты услуг.
  • Онлайновая поддержка сообщества и множество обучающих ресурсов.


Самое, на мой взгляд, главное то, что САПР отлично подойдет для студентов, по долгу учёбы которым приходится много чертить. Этот инструмент превосходно заменяет AutoCAD и бесплатен для индивидуального пользования.

Читать дальше →
Total votes 57: ↑55 and ↓2+53
Comments85

Information

Rating
4,250-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Lead
Linux
Git
Golang
Docker
OOP
Kubernetes
Python
Design patterns
SQL
Nginx