Pull to refresh
8
0
Даниил Федулов @DrhF

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

Send message

fork() vs. vfork()

Reading time15 min
Views41K
Послушайте!
Ведь, если звезды зажигают — значит — это кому-нибудь нужно?

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


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

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

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

Кому интересно, прошу под кат.
Читать дальше →
Total votes 80: ↑74 and ↓6+68
Comments29

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

Reading time7 min
Views46K
Приветствую уважаемых хабражителей!

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

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

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

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


Читать дальше →
Total votes 71: ↑64 and ↓7+57
Comments68

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

Reading time17 min
Views48K

Введение



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

Архитектура


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

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

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

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

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



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

Читать дальше →
Total votes 206: ↑204 and ↓2+202
Comments113

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

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

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

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

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



Читать дальше →
Total votes 42: ↑38 and ↓4+34
Comments39

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

Reading time12 min
Views117K
Сегодня мы хотим продолжить серию постов, в которых задаём разработчикам из Яндекса и пользователям Хабра самые острые для любого программиста вопросы. Сегодня это вопрос о том, какой язык программирования для вас любимый.

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

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



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

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

Reading time4 min
Views68K


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

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

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

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

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

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

Reading time19 min
Views697K

Введение


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

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

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

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

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


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

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

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

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

Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments54

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

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

image
Читать дальше →
Total votes 63: ↑59 and ↓4+55
Comments14

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

Reading time2 min
Views78K
Иногда требуется вставить формулу в блог или форум, причем сделать это красиво. В статье приведен обзор сервисов предоставляющих такую услугу.
Читать дальше →
Total votes 45: ↑39 and ↓6+33
Comments25

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

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



Примеры и много картинок
Total votes 40: ↑34 and ↓6+28
Comments13

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

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

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

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

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

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

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

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

image
Читать дальше →
Total votes 32: ↑20 and ↓12+8
Comments38

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

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



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

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

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

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

Reading time9 min
Views173K
Я считаю, что каждый программист должен написать свой компилятор.

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

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity