Обновить
9
0
Дмитрий Лущан@pixelshader

Программист

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

О компиляторах и интерпретаторах

Время на прочтение2 мин
Охват и читатели69K

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

GitHub-юзер yawnt собрал чудесную подборку ссылок для любителей драконов, языков и прочих вкусных внутренностей. А знающие камрады в комментариях наверняка поделятся с тобой и другими яствами.

Пишет yawnt следующее:

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

Я не включил (и не собираюсь) в список ссылки на официальную документацию, т. к. считаю очевидным, что первым делом следует смотреть именно туда ;P.
Итак, куча интересных ссылок

Багобезопасный код: шаблон проектирования Null Safe

Время на прочтение9 мин
Охват и читатели9.6K

Содержание


I. Описание проблемы
II. Обзор существующих решений
III. Вариант решения без применения аспектов.
IV. Решение на AspectJ
V. Динамические аспекты
VI. Послесловие.
VII. Ссылки и литература
Читать дальше →

Учим язык, смотря сериалы: vlc + lua + stardict + wordnet + anki = l'amour

Время на прочтение3 мин
Охват и читатели130K
Очень уж мне нравится смотреть сериалы, а еще я учу с их помощью языки. И если раньше я прилежно останавливал видео на непонятном месте, перематывал назад, включал субтитры и забивал незнакомые слова в Анки, то сейчас я делаю то же самое. Разве что лень заставила этот процесс автоматизировать, что привело к созданию расширения Say It Again для проигрывателя VLC со следующими особенностями:

  • Навигация по субтитрам (переход к предыдущей, следующей фразе) — клавиши y, u;
  • Сохранение слова, его транскрипции и перевода вместе с контекстом (см. скриншот) — клавиша i;
  • Функция «Еще раз»: переход к предыдущей фразе, показ субтитра и пауза — клавиша backspace;
  • Подключение любых словарей в формате Stardict (в сети лежат словари из Lingvo x3);
  • Экспорт в Anki или другую программу, понимающую файлы в формате csv;


Say It Again screenshot


Зачем все это нужно и как это работает?

Как убить Lenovo G580 одним ударом

Время на прочтение2 мин
Охват и читатели106K
Помните недавний баг EFI на Samsung 530U3C, который приводил к тому, что ноутбук больше не работал после единоразовой загрузки ubuntu?

Встречайте EFI на Lenovo G580!

Итак, в канун нового года и праздничных распродаж, Adiost купил Lenovo G580 с FreeDOS, снес его и установил Ubuntu. Через какое-то время захотел установить-посмотреть Windows 8. В ходе этого обнаружил, что не может зайти в настройки EFI нажатием кнопки F2: просто-напросто ничего не происходило и начинала грузиться ОС. Плюнув на это, установил Windows 8, и начал чинить.
Читать дальше →

SystemTap в Linux

Время на прочтение3 мин
Охват и читатели22K
Привет.

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

Всех интересующихся прошу под кат

Как стать ведущим разработчиком. Часть 1

Время на прочтение8 мин
Охват и читатели142K
Это перевод статьи, написанной Джоном Оллспоу, который на данный момент является старшим вице-президентом технического отдела в Etsy.

Продолжение перевода здесь

В нашей сфере деятельности нам доступны огромные объёмы знаний, в особенности тех, которые позволяют разработчику стать эффективным. Но почему-то, несмотря на существование множества книг о специфических задачах и обязанностях менеджеров в нетехнических областях, я практически не вижу новых книг или статей о том, как стать хорошим ведущим разработчиком. Замечательным исключением, конечно, являются статьи Кейт Maцудайры [от переводчика: на фотографии, кстати, именно она], немало написавшей о культурных составляющих инженерии.

Но в то же время, все мои знакомые преуспевающие разработчики помнят своих наставников, которые научили их тому, что значит быть „ведущим“.
Читать дальше →

Как появились регулярные выражения

Время на прочтение6 мин
Охват и читатели50K

Небольшое предисловие


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

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

Далее будет приведено небольшое исследование подобного рода, объектом которого является понятие регулярного выражения.
Читать дальше →

HabraReader — удобно читаем Хабрахабр на iOS устройствах

Время на прочтение4 мин
Охват и читатели8.6K
Некоторое время назад решил заняться разработкой программ для iOS. Хотелось написать что-нибудь для души и в качестве первого проекта я выбрал приложение для моего любимого сайта habrahabr.ru, так как на тот момент удобной программы для чтения постов сайта, удовлетворяющей моим требованиям, не было. Я представил себе какими свойствами должно обладать приложение, которым бы стал пользоваться ежедневно, и у меня получился следующий список:

  • простой интерфейс
  • возможность почитать посты в дороге, когда нет интернета
  • удобные возможности по работе с хабами/постами/поиском
  • возможность видеть только те посты, которые я еще не читал
  • автоматически синхронизировать список прочитанного и избранного между всеми моими iOS устройствами
  • поддержка habracut


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

Linux :: два, три, пять… указателей мыши

Время на прочтение3 мин
Охват и читатели67K
Не знаю зачем мне это пригодится, но очень вдруг захотелось иметь два указателя мыши в Linux, ведь две «мыши» у меня есть — собственно беспроводная мышь и тач-пад. Идея пришла в тот момент, когда я подключил вторую мышь, т.е. третье устройство управления указателем.
Я тоже подключу десять мышей и запутаюсь в указателях

Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту

Время на прочтение25 мин
Охват и читатели192K

Добрый день, уважаемые хабровчане. В этом цикле статей мы с вами пройдем достаточно длинный, но весьма интересный путь по превращению обычного роутера в мини-компьютер с LCD-дисплеем. Для этого мы разработаем сначала USB-видеокарту на базе микроконтроллера STM32F103, потом тестовый драйвер, который позволит нам выводить на него графику, и, наконец – полноценный драйвер фреймбуффера, благодаря которому можно будет запустить настоящие графические приложения, такие как x-сервер. Заодно мы научимся включать наш код в дерево исходников OpenWRT, допиливать его ядро и делать прочие полезные вещи.
Ну а в самом конце мы получим результат, который, я надеюсь, вызовет ностальгическую слезу у многих читателей. Я постараюсь излагать материал таким образом, чтобы в конце каждого этапа мы получали осязаемый результат, не дающий угаснуть энтузиазму. Итак, начнем.
Читать дальше →

Проброс видеокарты в виртуальную машину

Время на прочтение6 мин
Охват и читатели183K
Говорят, что современные аппаратные технологии поддержки виртуализации (VT-d у Intel, IOMMU у AMD) позволяют отдавать физическое устройство на шине PCI в непосредственное управление виртуальной машине. В том числе видеокарту.
Воображение рисует такую конфигурацию: настольный сервер с гипервизором, на нем запускается гостевая пользовательская операционная система, имеющая доступ к необходимым устройствам ввода-вывода, один-два неприхотливых сервера по мере надобности, ну и сколько надо виртуалок для бесчеловечных экспериментов. Управляем гипервизором через консоль в гостевой ОС либо удаленно, с ноутбука, скажем.
Вдохновленный этой картиной, я решил попробовать, но оказалось, что проброс (passthrough) видеоадаптера — задача не совсем тривиальная. Только месяца через три боданий с железом и чтения форумов удалось получить положительный результат. В качестве гипервизора пробовал VMware и Xen. Получилось только с Xen.
Читать дальше →

Однажды вы читали о ключевом слове volatile…

Время на прочтение5 мин
Охват и читатели105K
В C и C++ есть ключевое слово volatile, которое указывает компилятору, что значение в соответствующей области памяти может быть изменено в произвольный момент и потому нельзя оптимизировать доступ к этой области. Обычно описание ключевого слова сразу приводит пример с данными, которые могут быть в любой момент изменены из другой нити, аппаратным обеспечением или операционной системой. Прочитав описание примера, большинство читателей глубоко зевает, решает, что в этой жизни им такое не понадобится, и переходит к следующему разделу.

Сегодня рассмотрим менее экзотический сценарий использования ключевого слова volatile.

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

Google запускает «Граф знаний» для русскоязычных пользователей

Время на прочтение2 мин
Охват и читатели41K

Сегодня в русскоязычном блоге компании Google появилась новость о том, что к недавнему нововведению Knowledge Graph добавляется поддержка еще нескольких языков, а именно русского, немецкого, французского, португальского, итальянского, испанского и японского. Представитель компании рассказал, что в течении нескольких недель функционал будет доступен для всех и выдача изменится.
Читать дальше →

История о том, как Джеймс Боттомли из Linux Foundation пытался подписать в Microsoft загрузчик для UEFI secure boot

Время на прочтение3 мин
Охват и читатели39K
Железо, сертифицированное в Microsoft, как совместимое с Windows 8, обязательно должно поддерживать технологию «безопасной загрузки» UEFI secure boot, которая не позволяет загружать неподписанный код. Это создаёт большие проблемы всем, кто захочет поставить на сертифицированное железо отличную от Windows ОС. Консорциум Linux Foundation в октябре этого года объявил о том, что все дистрибутивы Linux смогут воспользоваться универсальным предзагрузчиком, который будет подписан корпорацией Microsoft и позволит относительно безболезненно загружать альтернативные системы.

Загрузчик давно написан и отлажен, но пока что не подписан Microsoft. Почему? Путь к получению заветного сертификата с ключом оказался необычайно длинным и тернистым. О том, как это происходило, рассказывает в своём блоге член совета Linux Foundation Джеймс Боттомли.
Читать дальше →

Бюджеты на R&D или на что влияют исследования в микроэлектронике

Время на прочтение3 мин
Охват и читатели34K
На Engadget взбаламутили всех, опубликовав статью про гонку цен на устройства, когда Amazon и Google постоянно снижают стоимость своих устройств или заставляют это делать партнеров. И по мнению автора статьи, это приводит к печальным последствиям, когда становятся невозможны инновации. Перевод этого материала есть на Хабре тут.

К сожалению, этот материал описывает ситуацию с точки зрения потребителя и частично, производителя устройства. Но совершенно не учитывает те компании, что как раз и создают технологии. Давайте взглянем на табличку в которой приведены топ 20 компаний по затратам на исследования и разработки в 2011 году.



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

Функциональное программирование в шелле на примере xargs

Время на прочтение6 мин
Охват и читатели24K
Abstract: рассказ о том, как быстро и красиво делать обработку списков в шелле, немного мануала по xargs и много воды про философию то ли программирования, то ли администрирования.

Немного SEO-оптимизации: карринг, лямбда-функция, композиция функций, map, фильтрация списка, работа с множествами в шелле.

Пример



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

Это не реальная «задача», это учебный пример, решая который (в решении будет однострочник) я расскажу про очень необычный и мощный инструмент системного администрирования — линейное функциональное программирование. Линейное оно, потому что использование пайпа "|" это линейное программирование, а использование xargs позволяет превратить сложную программу с вложенными циклами в однострочник функционального вида. Целью статьи будет не показать «как найти размер библиотек» и не пересказать аргументы xargs, а объяснить дух решения, пояснить стоящую за ним философию.

Лирика


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

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

Даже словами видно, что второй вариант короче.
Читать дальше →

Я не знаю ООП

Время на прочтение12 мин
Охват и читатели558K
Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю.

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

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

«Gerrit Code Review»: краткое руководство с картинками

Время на прочтение8 мин
Охват и читатели70K

Red and Blue Chair by Gerrit Rietveld (1918)

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

Одним из негативных последствий такой ситуации является bus factor, который стремится к единице. Для решения этой и других проблем было решено в порядке эксперимента внедрить систему ревизии кода (англ. code review): назначить одного разработчика ревизором у другого и таким образом познакомить его с кодом, а заодно и повысить качество последнего.

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

Пять способов улучшить Raspberry Pi

Время на прочтение3 мин
Охват и читатели175K
Стремительно набирает популярность одноплатный компьютер Raspberri Pi. Стремясь сделать его как можно дешевле, разработчики выкинули все «лишнее» и максимально упростили конструкцию там, где это было возможно. С одной стороны, это вынуждает пользователя терпеть некоторые неудобства при работе с системой. Но с другой стороны, оставляет простор для творчества и усовершенствований.

Итак, вашему вниманию предлагается обзор пяти полезных модификаций для Raspberry Pi.
Читать дальше →

Удачная модель ветвления для Git

Время на прочтение10 мин
Охват и читатели1M
Перевод статьи Vincent Driessen: A successful Git branching model

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



В качестве инструмента управления версиями всего исходного кода она использует Git.

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность