Pull to refresh
9
0
Дмитрий Лущан @pixelshader

Программист

Send message

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

Reading time2 min
Views68K

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

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

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

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

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

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

Reading time9 min
Views8.6K

Содержание


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

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

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

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


Say It Again screenshot


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

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

Reading time2 min
Views105K
Помните недавний баг EFI на Samsung 530U3C, который приводил к тому, что ноутбук больше не работал после единоразовой загрузки ubuntu?

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

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

SystemTap в Linux

Reading time3 min
Views21K
Привет.

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

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

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

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

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

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

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

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

Reading time6 min
Views49K

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


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

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

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

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

Reading time4 min
Views8.6K
Некоторое время назад решил заняться разработкой программ для iOS. Хотелось написать что-нибудь для души и в качестве первого проекта я выбрал приложение для моего любимого сайта habrahabr.ru, так как на тот момент удобной программы для чтения постов сайта, удовлетворяющей моим требованиям, не было. Я представил себе какими свойствами должно обладать приложение, которым бы стал пользоваться ежедневно, и у меня получился следующий список:

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


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

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

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

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

Reading time25 min
Views187K

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

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

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

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

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

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

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

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

Reading time2 min
Views41K

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

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

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

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

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

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

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



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

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

Reading time6 min
Views24K
Abstract: рассказ о том, как быстро и красиво делать обработку списков в шелле, немного мануала по xargs и много воды про философию то ли программирования, то ли администрирования.

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

Пример



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

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

Лирика


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

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

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

Я не знаю ООП

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

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

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

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

Reading time8 min
Views68K

Red and Blue Chair by Gerrit Rietveld (1918)

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

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

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

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

Reading time3 min
Views174K
Стремительно набирает популярность одноплатный компьютер Raspberri Pi. Стремясь сделать его как можно дешевле, разработчики выкинули все «лишнее» и максимально упростили конструкцию там, где это было возможно. С одной стороны, это вынуждает пользователя терпеть некоторые неудобства при работе с системой. Но с другой стороны, оставляет простор для творчества и усовершенствований.

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

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

Reading time10 min
Views1M
Перевод статьи Vincent Driessen: A successful Git branching model

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



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

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity