Search
Write a publication
Pull to refresh
52
0
Андрей Кравчук @prefrontalCortex

Software Engineer

Send message

QScintilla: пишем свой лексер

Reading time4 min
Views6.6K
Привет, хабр!

UPD: третья часть цикла.

Это вторая статья цикла про QScintilla. Первая здесь. Для начала хочу сказать огромное спасибо всем, кто вывел меня из кармоямы! А теперь можно начать. Что мы сегодня будем делать? Мы напишем лексер для Assembler'а! «В коробке» его нету — не беда, напишем сами! Процесс довольно длительный, поэтому я буду немного меньше расписывать и комментировать. Тем более я не знаю язык ассемблера, так что лексер будет до ужаса примитивный и будет разрисовывать только команды и комментарии.

Как сказал Гагарин — «Поехали!»
Читать дальше →

Недуги проект-дезориентированного ПО

Reading time4 min
Views4.6K
Любой знакомый с книгой о паттернах, написанной Бандой Четырёх знает, что паттерны, описанные в книге, представляют собой элегантные решения, проверенные временем. К сожалению, выделение этих паттернов из преемственного кода невозможно, потому что никто не знает, что они предложили эти паттерны, когда писали преемственный код. Поэтому следующий текст представляет из себя паттерны для широких масс. Представленные в этом документе паттерны представляют собой решения, пережившие многих. Наслаждайтесь чтением, но не используйте на практике!

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

Жизнь без объектов

Reading time5 min
Views21K
(Перевод)

Последние несколько лет я провел в изучении и экспериментах со многими языками программирования. В частности, я начал использовать Scala как основной язык, стараюсь использовать функциональный стиль везде где это возможно. Меня также весьма заинтересовал Haskell (чистый функциональный язык) и Clojure (современный диалект Лиспа).

Таким образом, я постепенно отказываюсь от объектно-ориентированной парадигмы, несмотря на то, что использовал в основном её последние 17 лет моей профессиональной деятельности. У меня появляется чувство, что объекты это то, что мешает нам писать лапидарный, структурированный и повторно используемый код.
Читать дальше →

Как правильно писать статьи о программировании для начинающих

Reading time5 min
Views11K
В последнее время на Хабре стало появляться довольно много статей о тех или иных аспектах программирования, которые позиционируются как статьи для «начинающих». Между тем, как раз для начинающих эти статьи часто являются непонятными: иногда — слишком сложными, иногда — не отвечающими на те вопросы, на которые должны, иногда — тяжелыми для восприятия.

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

Пять преимуществ прокрастинации

Reading time6 min
Views19K
Этот текст — перевод статьи Джеймса Алтачера, посвященной прокрастинации (или отлыниванию от работы), то есть тому, чем многие из нас регулярно занимаются. Автор высказывает свою точку зрения — прокрастинация не является исключительно негативным явлением и может обладать преимуществами.
Джеймс Алтачер (James Altucher) – предприниматель, инвестор, управляющий директор Formula Capital, основатель Stockpickr.com. Известный блоггер. Обладатель именной статьи про себя в Википедии.

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

Три ключевых принципа ПО, которые вы должны понимать

Reading time13 min
Views242K

Разрабатывая приложения, мы постоянно сталкиваемся с новыми подходами, языками и концептами. И постоянно мы мечемся в сомнениях «смогу ли я быть на волне, оставаться конкурентоспособным, учитывая все изменения и тренды?». Давайте задумаемся на мгновение, вспомнив фразу из моего любимого фильма «Касабланка» — в любви законов новых нет — так создан свет.

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

Засеки 25 минут!

Reading time2 min
Views5.3K
Как часто вам бывает нужно просто засечь время? Я думаю, что такая необходимость периодически возникает у всех. Кто-то просто смотрит на часы, кто-то использует специальные программы, кто-то ставит будильник на телефоне.

Но помимо всех этих способов можно ещё сделать вот так:

sleep 25m ; xmessage 'Hey! :)'

Всего две команды, которые довольно легко запоминаются.

Вместо xmessage может быть, разумеется, что угодно ещё. Например:

sleep 8h 30m ; mplayer /home/user/Music/pink_floyd-the_happiest_days_of_our_lives.flac

Впрочем, тут надо учитывать, что команда не будет выполнена, если вы закроете терминал. Если же необходимо, чтобы команда всё-таки выполнилась, то есть несколько способов это сделать.
Читать дальше →

Вещи, о которых следует помнить, программируя на Python

Reading time5 min
Views64K

Дзэн Питона



Изучение культуры, которая окружает язык, приближает вас на шаг к лучшим программистам. Если вы всё еще не прочли «Zen of Python», то откройте интерпретатор Python и введите import this. Для каждого элемента в списке вы найдете пример здесь

Однажды моё внимание привлекло:
Читать дальше →

Объектно ориентированный подход на функциях в Scheme

Reading time3 min
Views4.4K
imageПривет. В данной статье хотелось бы еще разок осветить вопрос объектного программирования на языке Scheme, так, как его рассматривают в книге «Структура и интерпретация компьютерных программ».
Далее предлагаю тем, кто еще ни когда не программировал на Scheme скачать DrRacket и попробовать по шагам пройтись по примерам из данной статьи. Опытные программисты Scheme, Racket… эта статья будет очень скучна, так как написана для новичков и людей, желающих «потрогать» racket.
Читать дальше →

Test Driven Design — первый опыт внедрения

Reading time5 min
Views9.8K
Многочисленные статьи, посвященные TDD в общем и Unit-тестам в частности, как правило, оперируют довольно искусственными примерами. Например, давайте напишем функцию, которая складывает два числа и напишем для неё тест. Честно говоря, на таких примерах трудно оценить преимущества использования автоматизированных тестов.

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

OutWiker. Open Source программа для хранения заметок

Reading time2 min
Views29K
Привет, хабравчане.

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



OutWiker — это кроссплатформенная (Windows, Linux) программа для хранения заметок в виде дерева. Распространяется OutWiker с открытыми исходниками. Особенностью программы является то, что все записи хранятся не в одном файле, а структура формируется из вложенных файлов и папок. Кроме того, программа поддерживает несколько типов страниц: простые текстовые страницы, страницы, где для оформления заметок используется HTML и страницы в формате викинотации (напоминающую pmWiki).
Читать дальше →

Выбираем WAMP платформу для разработки сайтов под Windows

Reading time11 min
Views328K
Во времена моей юности в русскоязычном сегменте сети интернет был популярен только один единственный WAMP комплекс. Это, как вы уже догадались, старый добрый Denwer. Он прочно обосновался на моём компьютере еще в далёком 2003 году. Другие альтернативы если и существовали в то время, то были известны в узких кругах и были не столь популярны.

Давайте посмотрим на то, что мы можем использовать сегодня, спустя столько лет. Я предлагаю рассмотреть, протестировать и сравнить 14! программных комплексов предназначенных для разработки сайтов под Windows.

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

Американская мечта, или Полгода в топе. Въ Умѣ

Reading time5 min
Views3.6K

Вместо предисловия


Прошло уже полгода с момента выхода первой версии нашего приложения «В уме». За эти шесть месяцев в жизни изменилось очень многое, но из Top 10 категории Education мы так и не выпали. Раньше меня это немного удивляло, но в конечном счете свыкся.

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

Как я за backtrace-ом ходил

Reading time6 min
Views20K
Не так давно мы в компании задумали дать возможность пользователям посылать нам уведомления о произошедших ошибках в нашем ПО. Сказано — сделано. Но тут возникла задача получения backtrace-а текущего стека вызовов программы прямо в рантайме. Оказалось, что есть несколько способов решения этой задачи. Данная статья — результат моих исследований вопроса получения бэктрейса для программ написанных на С/C++ и работающих на Linux и FreeBSD.
Читать дальше →

Про Ёлки

Reading time3 min
Views10K
Сегодня ночью в AppStore и GooglePlay появилось новое приложение, локальный чат, — Yolki, созданное при помощи Главстарта.

Идея Yolki пришла Сергею Прокошеву и Евгению Богеру 5 лет назад на лекции в университете, когда они хотели всем курсом обсудить скучного преподавателя и скоротать время. До сих пор не существует простого решения этой проблемы. Так в основу будущего приложения был заложен первый фундаментальный принцип.

Простота

Вся динамика должна была свестись к трем принципам: пришел, увидел (подумал) и написал.

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

Какие еще? Читайте дальше.
Читать дальше →

RESTful API для сервера – делаем правильно (Часть 2)

Reading time9 min
Views86K
В первой части статьи я кратко описал принципы RESTful и объяснил каким образом следует проектировать архитектуру вашего сервера так, чтобы можно было легко выпускать новые и прекращать поддержку устаревших версий вашего API. В этой части я кратко расскажу о HATEOAS и Hypermedia, а затем расскажу о роли, которую они могут сыграть при разработке нативных приложений для мобильных устройств. Но главной темой этой статьи будет реализация кэширования (точнее поддержка кэширования на стороне сервера). Целевая аудитория включает разработчиков серверного ПО и, в какой то мере, разработчиков под iOS или под другие мобильные платформы.

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

Используем экран Nokia 1100 в своих целях

Reading time4 min
Views130K
Сегодня мы расскажем о том, как использовать экран телефона Nokia 1100 в своих DIY-проектах, но сперва мы поделимся небольшой историей об этом телефоне.

Nokia 1100 — самый популярный телефон в мире, который посчастливилось сделать именно нам. С момента старта продаж в конце 2003 года телефон Nokia 1100 был распродан в количестве свыше 250 млн штук — это не только самый продаваемый продукт среди телефонов, но и среди вообще всей потребительской электроники.



Рассчитанный на широкую географию аудитории телефон имел крайне простой, но удовлетворяющий потребности жителей всех континентов практичный дизайн. Nokia 1100 имел монолитную силиконовую клавиатуру и ребристые не скользящие края, защищающие телефон от повреждений во влажных и пыльных климатических условиях, а также встроенный фонарик, предназначенный специально для жителей стран с недостаточным уличным освещением. Внешний вид телефона был разработан в калифорнийском Nokia Design Center болгаро-американским дизайнером Мики Механджийский (Miki Mehandjiysky).

«Единственный способ прийти ко всем этим функциям — это проводить много времени с потребителями, общаться с ними, смотреть на то, как они живут. Возьмём, например, функцию фонарика. Скорее всего вы подумаете „Да кому он вообще нужен?!“, но для потребителей, скажем, из Индии или Африки, где электричества либо нет вовсе, либо оно не всегда доступно, наличие фонарика крайне важно» — вспоминает о разработке Nokia 1100 Алекс Ламбик (Alex Lambeek), вице-президент Nokia, ответственный за сегмент бюджетных телефонов.

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

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

Qt Build System: спасательный круг для сборки

Reading time10 min
Views48K

Примечание(17.06.2013): синтаксис примеров в статье не соответствует последним версиям. Сверяйтесь с документацией. Также в марте был выпущен Qt Creator 2.7 с поддержкой QBS.
Не так давно команда разработчиков Qt представила новую систему сборки — QBS. Разумеется, основной реакцией было «Да чем вас QMAKE не устраивал», «Просто адаптируйте CMAKE», «Ещё одна система сборки [xkcd, стандарты]». Обещанные преимущества новой системы: гибкость, понятный синтаксис для всех разработчиков (QML — javascript-подобный декларативный язык), скорость билдов (чистых и инкрементальных), а также лёгкая расширяемость.
Всё это мы где-то уже слышали, поэтому в данной статье мы попытаемся разобраться, как разработчики пришли к этой системе, рассмотрим простейшие примеры, изучим основные конструкции и посмотрим, какая поддержка на уровне IDE присутствует на настоящий момент.
Let's go!

Будни разработки Open Source проекта

Reading time10 min
Views4.4K

На недавно прошедшей конференции Application Developer Days 2012 мне довелось прочитать коротенький доклад о том, как создаются Open Source проекты на примере OpenVZ Web Panel. К сожалению, у меня было 10 минут, вместо положенных 30-40 и в результате 80% подготовленного материала оказалось “за бортом”. Организаторы, почему-то в последний момент передумали и убрали даже 5-минутную секцию с вопросами, так что остался без фидбэка. Но не буду сильно наезжать на организаторов — они старались как могли и конференция явно удалась, за что им огромное спасибо. Также очень порадовало и качество большинства докладов.


Теперь к сути топика — хочу выложить полную версию рассказа о том, как создаются Open Source проекты на примере собственного начинания, поделится мыслями и взглядами на разработку подобных проектов, рассказать о внутренней кухне, попробовать предостеречь от типичных ошибок.
Читать дальше →

Information

Rating
10,725-th
Location
Подгорица, Подгорица, Черногория
Works in
Date of birth
Registered
Activity

Specialization

Software Developer, Fullstack Developer
Senior
From 5,000 €
Lisp
Clojure
Unix
Linux
Docker