Pull to refresh
5
0

User

Send message

Хабр — не место для сублимации

Reading time4 min
Views1.7K
Хабралюди, с нами что-то не так. Серьезно. Не замечаете?

Хабр — не жалобная книга, но возмущения и негодования в комментариях сыплются постоянно.

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

Мы очень легко провоцируемы, легко раздражаемся на мнения других, на какие-то мелочи, отвлекаясь для чего вообще находимся в этой экосистеме. Позитива от такого общения не остается. Остается обыденность и ощущение что опять кто-то неправ в этих ваших.

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

Учим язык, смотря сериалы: 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


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

Простейший делегат на C++

Reading time7 min
Views87K
logoВ C# есть делегаты. В python есть делегаты. В javascript есть делегаты. В Java есть выполняющую их роль замыкания. А в C++ делегатов нет O_O. Многие талантливые программисты успешно борются с этим недостатком, разрабатывая и используя sigslots, boost::function и другие ценные и нужные библиотеки. К сожалению, большинство реализаций отличаются не только методом использования, но также эпической сложностью применяемой шаблонной магии. Дабы при изучении исходников boost::function волосы не вставали дыбом, я написал эту небольшую статью, показывающую как самым простым и топорным способом реализовать делегат на C++. Описанная реализация является иллюстративной, имеет множество недостатков и ее вряд ли можно применить в серьезных проектах — зато она максимально простая и позволяет ознакомиться с предметной областью не разбирая трехэтажные шаблоны sigslots :).

Посмотреть схему велосипеда - много текста и картинок

Паттерны ООП в метафорах

Reading time17 min
Views575K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →

Как придумать имя для нового продукта или проекта

Reading time3 min
Views5.9K
Нет, я не буду мусолить скучные теории. Уверен, всем нам для запуска нового продукта или сервиса достаточно самых простых и прозрачных критериев.

Вот, я и решил напомнить читателям критерии, сформулированные Гаем Кавасаки в его, уже превратившейся в классическую, книге The Art of the Start (или просто — «Стартап»).

За многие годы работы в корпоративном маркетинге я не видел более простых и работающих критериев.
Поэтому, именно они были использованы при разработке имени моего нынешнего стартапа.


Уверен, здесь ещё есть люди, которые не знакомы с этим подходом и он окажется им полезным.
Читать дальше →

Чёртова дюжина советов начинающим верстальщикам. Часть первая

Reading time6 min
Views32K
Доброго времени суток!

Введение


Я являюсь фрилансером. Раньше я не особо задумывался над тем, как и что делают верстальщики. Я делал серверную часть, а мой друг верстал и набивал контент. Совсем недавно мне захотелось попробовать «что и как». Пару дней назад мне на глаза попался материал, который мне очень понравился. Он наглядно обЪяснял, что и как нужно писать. К сожалению, сылку дать не могу, так как я не запаомнил, где располагался сей мануал, но… Казалось бы, можно это и запомнить, но я пошёл ещё одним путём — законспектировал это дело. Собственно, добро пожаловать в мою записку.
Читать дальше →

Что такое искусственные нейронные сети?

Reading time10 min
Views126K
Искусственные нейронные сети применяются в различных областях науки: начиная от систем распознавания речи до распознавания вторичной структуры белка, классификации различных видов рака и генной инженерии. Однако, как они работают и чем они хороши?

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

Обзор языка программирования Rust

Reading time10 min
Views104K
Rust — новый экспериментальный язык программирования, разрабатываемый Mozilla. Язык компилируемый и мультипарадигмальный, позиционируется как альтернатива С/С++, что уже само по себе интересно, так как даже претендентов на конкуренцию не так уж и много. Можно вспомнить D Вальтера Брайта или Go от Google.
В Rust поддерживаются функицональное, параллельное, процедурное и объектно-ориентированное программирование, т.е. почти весь спектр реально используемых в прикладном программировании парадигм.

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

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

Лучшие приёмы Qt Quick: связывание свойств в QML

Reading time3 min
Views8.9K
Связывание между двумя свойствами (property binding) «a» и «b», объявленное как «a: b», обновляет значение «a» всякий раз, когда обновляется «b». Связывание свойств находит практическое применение при управлении размером элемента, управлении положением элемента с помощью якоря, динамическом изменении текста или изображений, управлении цветом элемента или состоянием кнопок.

В самой простой форме «а», связанное с «b», сохраняет то же значение, что и «b», на протяжение всего времени связывания свойств. В более продвинутой форме «a» привязывается к произвольному JavaScript-выражению, которое использует «b» как «a: b + 1».

Связывать можно более двух свойств — «a: b * c + 1». В данном случае выражение будет считаться при каждом изменении «b» или «c».

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

Qt Components для десктопа

Reading time6 min
Views16K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

Как известно, QML основан на графических примитивах и даже банальные кнопки приходится рисовать из них (прямоугольник, градиент, текст, область мыши, например). Для облегчения процесса создания UI были созданы Qt Components. Они позволяют создавать кнопки, текстовые поля, дропбоксы и прочие контролы для ввода или отображения данных. В официальном релизе сейчас компоненты для
мобильных платформ: Symbian и MeeGo. Но в Qt Labs также есть версия для десктопных платформ, которая (через какое-то время) будет включена в Qt5, как основное средство создания пользовательского интерфейса (как мы помним, в Qt5 на первом месте идет QML, а QtGui уже на втором). При этом компоненты сами подстраиваются под нативный вид операционной системы.

Для того, чтобы показать возможности десктопных компонентов, а заодно обозначить основные проблемы и преимущества их использования, я создал минимальное графическое приложение на классическом QtGui и на компонентах. Нет, не Hello World. Калькулятор. Без реализации расчетов, просто графический интерфейс.



Под катом собраны запуски под 3 операционными системами и некоторые рассуждения на тему.

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

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

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

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

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

Применение шейдеров OpenGL в QML

Reading time14 min
Views31K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“

Данный пост посвящен применению шейдеров OpenGL вместе с элементами декларативного языка QML. Тема, на мой взгляд, является актуальной, так как в будущей версии QML 2.0 планируется широко использовать OpenGL, как backend для отрисовки графических элементов интерфейса. Написание шейдеров — тема непростая и целью данного поста является то, чтобы в первую очередь человек, прочитав её, мог сразу же что-то попробовать сделать интересное для себя и поэкспериментировать, получив, например, вот такие примеры:



В конце я приведу полезные ссылки, где Вы сможете посмотреть материал для дальнейшего, более глубокого изучения данной темы, если она конечно Вас заинтересует, и реализовать еще более интересные шейдеры, применив их вместе с элементами языка QML. Работу с шейдерами можно рассмотреть на примере различных элементов QML: ShaderEffectItem, множества классов Qt3D, так же использующих OpenGL и т.д. В данном посте я продемонстрирую несколько примеров, используя элемент ShaderEffectItem вместе с ShaderEffectSource.
Читать дальше →

Кроссплатформенность — это круто

Reading time8 min
Views30K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

Ни для кого не секрет, что сегодня мобильные игры очень популярны. Возможность написать одну из таких игр есть у каждого разработчика, даже начинающего. Часто возникает вопрос с выбором платформы. Конечно, хочется, чтобы игра была сразу везде: на iOS и Android, на WP7 и MeeGo, на десктопе и в браузере. И чтобы все это можно было лекго реализовать с помощью бесплатных инструментов.



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

Делаем приватный монитор из старого LCD монитора

Reading time2 min
Views983K


Вы наконец-то можете сделать кое-что со своим старым LCD монитором, который завалялся у Вас в гараже. Превратите его в шпионский монитор! Для всех вокруг он будет выглядеть просто белым экраном, но не для Вас, потому что у Вас будут специальные «волшебные» очки.

Всё что Вам нужно – это пара старых очков, нож для бумаги и растворитель для краски.

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

Типичные случаи утечки памяти в Java

Reading time4 min
Views75K
Большинству разработчиков известно, что сборщик мусора в Java не является универсальным механизмом, позволяющим программисту полностью забыть о правилах использования памяти и о том, в каких случаях осуществляется его работа. Ниже описаны типичные случаи утечки памяти в java-приложениях, встречающиеся повсеместно.
Итак, о чём должен помнить каждый java-программист.
Читать дальше →

Видеохостинг своими руками

Reading time6 min
Views71K
Эта статья о некоторых технических аспектах реализации бесплатного сервиса для загрузки, хранения и просмотра видео. Будут рассмотрены вопросы настройки серверного программного обеспечения, даны примеры команд для конвертации видео и примеры кода на языке PHP.
Читать дальше →

Сам себе сервис скриншотов

Reading time3 min
Views24K

Все началось с ...


Несколько лет назад я только начал знакомиться с web-программированием, и одним из моих первых «проектов» был каталожек сайтов. Разработка велась для себя, в целях повышения опыта. Но т.к. аналогичных сайтов тьма-тьмущая, хотелось сделать что-то особенное. Я решил, что каждый сайт в каталоге будет представлен со скриншотом. Как все это автоматизировать я не знал, потому первое время я делал все скриншоты руками и заливал их уже как готовые файлы.

Шло время, проект «покрылся пылью», времени заниматься ним не было, но примерно год назад накатила новая «волна креатива» и захотелось мне решить «задачку автоскриншотера».

Первое, что пришло на ум — это готовые сервисы по созданию скриншотов, предоставяющие API. Но, перебрав некоторые (сейчас уже названия не помню), понял, что это не для меня: возможности были довольно урезаны, иногда приходилось довольно долго ждать «очереди», иногда сайты на скринах выглядели довольно убого. А главной проблемой было то, что все это должно было работать асинхронно и из скрипта я бы не смог понять — то ли сервис отдал мне временную картинку-заглушку, то ли уже готовый скриншот сайта.

Итого, я решил сделать собственный «велосипед».
Читать дальше →

Кодирование аудио с потерями. Что к чему?

Reading time12 min
Views89K
Внимание: это старая версия статьи, новая доступна на моём сайте.

Эволюция кодирования аудио



На дворе 2011-й год, с момента появления первого MP3 кодировщика прошло уже 17 лет. Но то, что большинство из нас до сих пор спокойно слушает музыку в формате MP3 — вовсе не значит, что прогресс всё это время топтался на месте. И это касается не только развития алгоритма кодирования MP3, но и эволюции кодирования аудио с потерями вообще — в виде новых, более совершенных кодеков, действительно позволяющих получить лучшее качество при меньшем размере. Такие форматы как OGG Vorbis, AAC, WMA, Musepack давно оставили позади устаревший MP3 с его многочисленными ограничениями и недостатками.
Читать дальше →

«Правильная» музыка. Или как навести порядок в своей MP3 коллекции

Reading time5 min
Views81K

Мотивы

Навеяно хабратопиком.

Предыстория

В октябре 2008 года я купил себе iPhone 3G и, до нынешнего лета, в качестве mp3-плеера использовал именно его. Необходимость загружать музыку в смартфон, используя iTunes, по началу меня изрядно напрягала. Но, как выяснилось значительно позже, возможно именно это избавило меня от головной боли с конвертированием тегов, записанных кириллицей. Я просто не задумываясь добавлял альбомы из своей коллекции в «тунец» и всегда гарантированно получал на телефоне треки без «кракозябр». Удобно. Но всему приходит конец.
а дальше...
2

Information

Rating
Does not participate
Registered
Activity