Как стать автором
Обновить
8
0
Даниил Федулов @DrhF

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

Отправить сообщение

fork() vs. vfork()

Время на прочтение15 мин
Количество просмотров40K
Послушайте!
Ведь, если звезды зажигают — значит — это кому-нибудь нужно?

В. В. Маяковский, 1914


Я занимаюсь программированием для встроенных систем, и данную статью решил написать для того, чтобы лучше разобраться с проблемой использования системных вызовов fork() и vfork(). Второй из них часто советуют не использовать, но ясно, что появился он не просто так.

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

В качестве бонуса будет приведено описание реализаций vfork()/fork() в нашем проекте. Прежде всего, мой интерес связан с применением этих вызовов во встроенных системах, и главной особенностью приведённых реализаций является отсутствие виртуальной памяти. Возможно, хабровчане, хорошо разбирающиеся в системном программировании и во встроенных системах, дадут советы и поделятся опытом.

Кому интересно, прошу под кат.
Читать дальше →
Всего голосов 80: ↑74 и ↓6+68
Комментарии29

10 малоизвестных возможностей Objective-C

Время на прочтение7 мин
Количество просмотров46K
Приветствую уважаемых хабражителей!

Objective-C — язык с богатым рантаймом, но в данной статье речь пойдёт не о содержимом хедера <objc/runtime.h>, а о некоторых возможностях самого языка, о которых многие разработчики и не догадываются. Да, на них натыкаешься, читая документацию, отмечаешь про себя «хм, интересно, надо как-нибудь копнуть», но они обычно быстро вылетают из головы. А начинающие разработчики часто вообще читают документацию наискосок.

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

Итак, начну с самого «вкусного» на мой взгляд: безымянные методы.

1. Безымянные методы


Читать дальше →
Всего голосов 71: ↑64 и ↓7+57
Комментарии68

Пишем простой интерпретатор на C++ с помощью TDD, часть 1

Время на прочтение17 мин
Количество просмотров47K

Введение



Многие C++ программисты слышали про разработку через тестирование. Но почти все материалы по данной теме касаются более высокоуровневых языков и сосредоточены больше на общей теории, чем на практике. Итак, в данной статье я попробую привести пример пошаговой разработки через тестирование небольшого проекта на C++. А именно, как можно предположить из названия, простого интерпретатора математических выражений. Такой проект также является неплохой code kata, так как на его выполнение затрачивается не более часа (если не писать параллельно статью об этом).

Архитектура


Несмотря на то, что при использовании TDD архитектура приложения постепенно проявляется сама собой, начальная её проработка всё же необходима. Благодаря этому может значительно снизиться общее время, затраченное на реализацию. Это особенно эффективно в тех случаях, когда существуют готовые примеры подобных систем, которые можно взять за образец. В данном случае, существует вполне устоявшееся мнение о том, как должны быть устроены компиляторы и интерпретаторы, чем и можно воспользоваться.

Существует множество библиотек и инструментов, которые могут облегчить разработку интерпретаторов и компиляторов. Начиная от Boost.Spirit и заканчивая ANTLR и Bison. Можно даже запустить канал интерпретатора командной строки через popen и вычислить выражение через него. Целью данной статье является пошаговая разработка достаточно сложной системы с помощью TDD, поэтому будет использоваться только стандартная библиотека C++ и встроенный в IDE тестовый фреймворк.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии9

Домофонный мультиключ и всё про имитацию «таблеток»

Время на прочтение9 мин
Количество просмотров518K
Да, это жутко избитая тема. Универсальный домофонный ключ «таблетку» делал наверное каждый второй, кто начинал изучать микроконтроллеры. В Интернете очень много и статей на эту тему, и готовых решений. Однако, интерес к этому угасать не перестаёт даже с массовым переходом на RFID. Это не удивительно, ведь многим хочется собрать такое устройство, которое выполняет не только весьма интересную задачу, но ещё и всегда с собой. К тому же оно не такое уж сложное в изготовлении.

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



Внимание! Этот ключ не позволяет нелегально проникать куда-либо. Это устройство лишь для того, чтобы носить один ключ вместо нескольких.
Хотя ничто не мешает вам записать в него универсальные коды открытия домофонов.

Читать дальше →
Всего голосов 206: ↑204 и ↓2+202
Комментарии113

Пишем на Kotlin под Android

Время на прочтение7 мин
Количество просмотров97K
Года два назад я обнаружил, что в Android Market нет удобных мне приложений для учета времени, затраченного на разные проекты. Как настоящий лентяй, я решил не искать требуемое, а написать его сам. Это оказалось несколько сложнее, чем казалось вначале, и я все забросил в режиме вялотекущего хобби воплощение моего желания прожило больше года, медленно продвигаясь от идеи к альфа-версии.

И тут вдруг добрые люди предложили мне рассказать, как писать под Android на Kotlin'e. Мне показалось, что это добрый знак, и я быстро переписал приложение на Kotlin, закончил его и выложил в Google Play.

Важное уточнение: эта статья — только про то, как писать под Android на Kotlin'e. Интересно будет только тем, кто хочет попробовать Kotlin, и тем, кто хочет понять, зачем его пробовать. Приложение, которое я написал — очень-очень простое (и само по себе никак не относится к JetBrains). В его коде гарантированно можно что-то улучшить, оно выложено на Github только для примера, а не в качестве образца восхитительного кода. Оно работает, и если вам хочется его попробовать, то поставить можно отсюда. Но еще раз: это — демо, его цель — быть не совершенным приложением, а введением в Kotlin под Андроид.

Опять что-то новое. И зачем мне это знать?



Читать дальше →
Всего голосов 42: ↑38 и ↓4+34
Комментарии39

Какой язык программирования больше всего любят в Яндексе? И всегда ли любовь взаимна

Время на прочтение12 мин
Количество просмотров116K
Сегодня мы хотим продолжить серию постов, в которых задаём разработчикам из Яндекса и пользователям Хабра самые острые для любого программиста вопросы. Сегодня это вопрос о том, какой язык программирования для вас любимый.

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

А если сотрудников в этой компании несколько тысяч, масштаб бедствия становится поистине грандиозным. Когда я пришла к тем своим коллегам, которых вы увидите в этом посте, то думала, что и причины для любви и ненависти у них будут отличаться. Но оказалось, что все ещё интереснее.



Многие из тех, с кем я говорила, знакомы вам по постам в блоге Яндекса на Хабре: anatolix, kappa, bobuk, yafinder, styskin. Несмотря на то, что многие участники нашего опроса стали руководителями, они продолжают писать код. Под катом можно прочитать подробные ответы, не полностью попавшие в видео, и рассказать, что вы думаете по теме.
Читать дальше →
Всего голосов 137: ↑120 и ↓17+103
Комментарии129

Практика программирования игр на python: жизнь

Время на прочтение4 мин
Количество просмотров68K


Недавно стало известно, что python признан самым популярным языком для обучения студентов в США. Я, будучи студентом Технопарка, решил не отставать от тренда, поподробнее изучить этот модный язык и заодно написать несколько постов. Для разминки я решил реализовать Conway's Game of Life. Это довольно-таки забавная «игра», в которой мы можем в некотором смысле моделировать развитие группы организмов в окружающей среде. Правила такие: делим пространство на клетки, которые могут быть либо живыми, либо пустыми. А затем на каждом шаге состояние клетки обновляем в зависимости от числа живых соседей. Например, слишком много — клетка умирает, а если нет — рождается. Можно от души экспериментировать с конфигурациями, получаются разные странные вещи, иногда корабли. Корабли (gliders) — отдельная тема, это такие группы клеток, которые изменяются и вместе с тем путешествуют в пространстве. Кроме кораблей могут образовываться и другие группы клеток с хитрыми свойствами, но о них — в Википедии.
Читать дальше →
Всего голосов 71: ↑44 и ↓27+17
Комментарии11

Linux и LibreOffice устанавливают в школах, госучреждениях и судах Валенсии

Время на прочтение1 мин
Количество просмотров14K
Пару дней назад Еврокомиссия сообщила, что французская Тулуза сэкономила 1 млн евро благодаря замене проприетарного MS Office на свободный LibreOffice. Апгрейд продолжался полтора года, а часть сэкономленных денег Тулуза переведёт разработчикам LibreOffice.

И вот сегодня — ещё одна новость, которая демонстрирует огромные возможности экономии бюджетных средств при переходе на продукты Open Source.

Департамент автономного региона Валенсия (Испания) выпустил новую версию Lliurex — локализованного варианта дистрибутива Edubuntu Linux. Этот дистрибутив установлен на 110 000 школьных компьютеров в регионе. С выходом новой версии 14.06 власти отметили успех проекта и заметили, что за последние 9 лет Lliurex уже сэкономил государству около 36 млн евро.
Читать дальше →
Всего голосов 45: ↑35 и ↓10+25
Комментарии24

Как сверстать веб-страницу. Часть 2 — Bootstrap

Время на прочтение19 мин
Количество просмотров695K

Введение


Уважаемый читатель, эта статья является второй частью цикла статей, посвященных вёрстке.

В первой части мы верстали шаблон Corporate Blue от студии Pcklaboratory с помощью стандартных средств на чистом HTML и CSS. В данной статье мы попробуем сверстать этот же шаблон, но с помощью CSS фреймворка Bootstrap 3.
Читать дальше →
Всего голосов 104: ↑86 и ↓18+68
Комментарии59

Как сверстать веб-страницу. Часть 1

Время на прочтение13 мин
Количество просмотров1.2M
Уважаемый читатель, этой статьей я открываю цикл статей, посвященных вёрстке.
В первой части будет описано, как это сделать с помощью стандартных средств на чистом HTML и CSS. В последующих частях рассмотрим как сделать тоже самое, но с помощью современных фреймворков и CMS.

Часть 1. Верстка стандартными средствами


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

Итак, давайте приступим. В качестве нашего подопытного мы возьмем бесплатный psd шаблон Corporate Blue от студии Pcklaboratory.
Читать дальше →
Всего голосов 155: ↑120 и ↓35+85
Комментарии110

Учебник по языку программирования D. Часть 1

Время на прочтение10 мин
Количество просмотров41K
Данный пост начинает серию переводов D Programming Language Tutorial, дабы компенсировать информационный вакуум об этом системном языке. Каждая часть будет содержать константое количество материала из книги, так как оригинальные главы имеют широкий разброс в размере: от пары абзацев до нескольких печатных страниц. Все примеры кода проверяются на текущем релизе компилятора dmd 2.065, и если возникают проблемы с технической частью, прошу отписываться в комментариях.

Читать дальше →
Всего голосов 40: ↑33 и ↓7+26
Комментарии54

Что нового нас ожидает в Django 1.7

Время на прочтение5 мин
Количество просмотров23K
В данном посте представлен обзор новшеств и особенностей популярного среди Python разработчиков фреймворка Django 1.7. Релиз позиционируется как сообществом, так и основными разработчиками — как наиболее значимый релиз, с момента выхода в свет Django 1.0.

image
Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Комментарии14

Обзор on-line сервисов для преобразования формул Latex в картинки

Время на прочтение2 мин
Количество просмотров77K
Иногда требуется вставить формулу в блог или форум, причем сделать это красиво. В статье приведен обзор сервисов предоставляющих такую услугу.
Читать дальше →
Всего голосов 45: ↑39 и ↓6+33
Комментарии25

Визуализация презентаций в стиле IT-компаний

Время на прочтение3 мин
Количество просмотров69K
Хочу рассказать о том, как можно использовать ярко-выраженные стили трех IT-компаний для оформления следующих инструментов визуализации в презентации:
  1. Иллюстрации — помогают передать сообщение быстрее текста.
  2. Цвет — позволяет поставить акцент.
  3. Список — структурирует информацию для лучшего восприятия.
  4. Заголовки (подзаголовки) — концентрируют внимание на смысле слайда.
  5. Pager (нумератор) — указывает номер/раздел на слайде из общего содержимого.
  6. Tracker (заглушка) — напоминает на каком месте в презентации находится слайд.



Примеры и много картинок
Всего голосов 40: ↑34 и ↓6+28
Комментарии13

Шпионские гаджеты от АНБ

Время на прочтение10 мин
Количество просмотров394K
imageСреди документов опубликованных Эдвардом Сноуденом, бывшим сотрудником ЦРУ и Агентства национальной безопасности США, были обнаружены материалы описывающие некоторые детали технологий шпионажа используемых АНБ. Список программных и аппаратных средств оформлен в виде небольшого каталога. Всего сорок восемь страниц отмеченных грифами «Секретно» и «Совершенно секретно», на которых дано краткое описание той или иной технологии для слежки. Данный список не является исчерпывающим. Представлены техники связанные с получением скрытого доступа к вычислительной технике и сетям, а также способы и устройства радиоэлектронной разведки связанные с мобильной связью и оборудование для наблюдения. В этой статье я расскажу об этих методах шпионажа, далее будет четыре дюжины слайдов(осторожно, трафик).
Узнать больше
Всего голосов 256: ↑251 и ↓5+246
Комментарии222

Олимпиады по программированию, взгляд из НГУ. Статья 1 — составление задач

Время на прочтение5 мин
Количество просмотров6.2K
Следующий год будет моим пятым и последним сезоном в ACM-олимпиадах. За эти годы накопилось много разных воспоминаний и знаний об олимпиадах, благо мой университет участвует в них весьма активно. Рассказывать только со стороны участника будет не совсем правильным, поскольку поучаствовать в олимпиадах могут многие, мне же довелось и быть в составе жюри (правда, школьных олимпиад). Расскажу немного интересных вещей изнутри, приоткрою чуть-чуть наше закулисье. Рассказ будет тесно связан с Открытой Всесибирской олимпиадой, поскольку с ней у меня общение самое тесное (да и проводится она нашим университетом).

Вторая статья — про тестирующие системы.
Третья статья — про работу оргкомитета.
Четвёртая статья — про тур непосредственно.

В первой статье я хочу рассказать о составлении задач к этим олимпиадам. Дело увлекательное, творческое, но порой весьма муторное.
Читать дальше →
Всего голосов 56: ↑49 и ↓7+42
Комментарии32

Windows RT. Личный опыт

Время на прочтение6 мин
Количество просмотров106K
Зачастую, или даже почти всегда, когда покупаем любое устройство, мы ждем от него исполнения нужных нам функций. Бывает, что не все аппараты оправдывают положенные на них надежды, но если подумать, то оказывается, что виноваты вовсе ни производители гаджета, ни создатели ПО, а сами покупатели. Так как пользователь ждет какого-то функционала, так и разработчики закладывают определенные функции в свое устройство. Отсюда выплывает такая мысль, что перед покупкой нам нужно искать нужные функции в разных устройствах и покупать те, в которых мы их находим, а не просто те, что нам понравились, или посоветовали друзья. Такой поступок будет правильным. Давайте рассмотрим кому же может быть полезным планшет на Windows RT.

image
Читать дальше →
Всего голосов 32: ↑20 и ↓12+8
Комментарии38

Редактор скриншотов в Яндекс.Диске

Время на прочтение1 мин
Количество просмотров25K
Сегодня в Яндекс.Диске для Windows и OS X появился редактор скриншотов. То, что многие раньше организовывали с помощью симлинков и скриптов, теперь работает из коробки. Не говоря об удобном и специально предназначенном для работы со скриншотами редакторе.



Сочетания клавиш для снятия скриншота остаются стандартные — Prnt Scrn на Windows и Cmd+Shift+4 на OS X. Вы сразу увидите лаконичный редактор с инструментами: набором стрелок и фигур разных цветов, маркером и инструментом размытия. Выделив важное, вы сможете в один клик сохранить свой скриншот на компьютер или получить короткую ссылку на него.
Читать дальше →
Всего голосов 74: ↑67 и ↓7+60
Комментарии49

Регулярные выражения, пособие для новичков. Часть 1

Время на прочтение14 мин
Количество просмотров911K
Регулярные выражения (РВ) это, по существу, крошечный язык программирования, встроенный в Python и доступный при помощи модуля re. Используя его, вы указывается правила для множества возможных строк, которые вы хотите проверить; это множество может содержать английские фразы, или адреса электронной почты, или TeX команды, или все что угодно. С помощью РВ вы можете задавать вопросы, такие как «Соответствует ли эта строка шаблону?», или «Совпадает ли шаблон где-нибудь с этой строкой?». Вы можете также использовать регулярные выражения, чтобы изменить строку или разбить ее на части различными способами.
Читать дальше →
Всего голосов 105: ↑99 и ↓6+93
Комментарии32

Пишем примитивный и никому не нужный компилятор

Время на прочтение9 мин
Количество просмотров171K
Я считаю, что каждый программист должен написать свой компилятор.

Я сам долгое время считал, что создание компиляторов — это удел элиты, а простому смертному программисту не постичь этой науки. Попробую доказать, что это не так.

В посте мы рассмотрим, как можно написать свой компилятор C-подобного языка меньше чем за час, исписав всего 300 строчек кода. В качестве бонуса, сюда входит и код виртуальной машины, в байткод которой будет компилироваться исходник.
Читать дальше →
Всего голосов 247: ↑231 и ↓16+215
Комментарии67

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность