Под Хабракатом небольшой этюд позволяющий писать маленькие или большие приложения, которые содержат в себе свой же код и выглядят при этом почти адекватно.
Сергій Олендаренко @GooRoo
User
libral – слой абстракции доступа к библиотекам сжатия
2 min
1.3K
На данный момент поддерживаются библиотеки:
- libc — без сжатия
- zlib — www.zlib.net
- lzo — www.oberhumer.com/opensource/lzo
- snappy — code.google.com/p/snappy
- bzip2 — www.bzip.org
+31
Простейший делегат на C++
7 min
87K
+36
Google testing framework (gtest)
6 min
190KTutorial

+50
Четыре вида метаданных NTFS
4 min
19K
Речь пойдёт о точках повторной обработки (reparse points), идентификаторах объектов (object id) и о других типах данных, которые может содержать файл помимо своего основного содержимого.
+89
Получение Y-комбинатора в 7 простых шагов
3 min
7.1KTranslation
Y-комбинатор это метод реализации механизма рекурсии в языке программирования который не поддерживает его изначально (на самом деле, он используется больше для осуществления программирования мозгов). Однако требуется, чтобы язык поддерживал анонимные функции.
+52
Haskell без монад
10 min
7.2KЛюбой программист, изучающий haskell, рано или поздно встречается с таким непостижимым понятием как монада. Для многих знакомство с языком заканчивается монадами. Существует множество руководств по монадам, и постоянно появляются новые (1). Те немногие, кто понимает монады, тщательно скрывают свои знания, объясняя монады в терминах эндофункторов и естественных преобразований (2). Ни один опытный программист не может найти монадам место в своей устоявшейся картине мира.
В результате java-программисты только посмеиваются над хаскелем, не отрываясь от своего миллионострочного энтерпрайзного проекта. Разработчики на С++ патчат свои сверх-быстрые приложения и придумывают ещё более умные указатели. Веб-разработчики листают примеры и огромные спецификации по css, xml и javascript. А те из них, кто в свободное время изучает haskell, сталкивается с труднопреодолимым препятствием, имя которому монады.
Итак, узнаем как программировать на хаскеле без монад.
В результате java-программисты только посмеиваются над хаскелем, не отрываясь от своего миллионострочного энтерпрайзного проекта. Разработчики на С++ патчат свои сверх-быстрые приложения и придумывают ещё более умные указатели. Веб-разработчики листают примеры и огромные спецификации по css, xml и javascript. А те из них, кто в свободное время изучает haskell, сталкивается с труднопреодолимым препятствием, имя которому монады.
Итак, узнаем как программировать на хаскеле без монад.
+52
Создание py2exe сборок с модулями Python, содержащими сторонние файлы
6 min
11KДля краткости, введем обозначение «нестандартные» — под этим термином будем далее подразумевать такие модули, которые содержат в себе файлы, отличные от *.py. К примеру это могут быть библиотеки (*.pyd), картинки, иконки, и т.д.
Первая проблема состоит в том, что практически все сборщики бинарных «дистрибутивов» python-приложений, такие как py2exe, bbfreeze, cx_Freeze, и другие, забирают из таких модулей только *.py файлы. Вторая проблема возникает со сложными namespace-модулями, такими как ETS — часто сборщик не может правильно разобрать все их внутренние зависимости.
Конкретно в моем случае камнями преткновения оказались все модули ETS (mayavi, chaco, и т.д.), m2crypto, vtk, h5py, matplotlib и несколько других (вообще, как выяснилось, таких модулей очень много).
Я попробовал протестировать разные сборщики и поначалу остановился на cx_Freeze, т.к. он единственный умеет более-менее правильно импортировать ETS «из коробки». Однако, его оказалось недостаточно: он не смог справиться с другими нестандартными модулями, а также по ряду других причин (к примеру, мне так и не удалось скрыть окно консоли, поставить кастомную иконку, и пр.). Конечно, там есть механизм «рецептов» (совсем не документированный), который даже работает, к примеру, для matplotlib, но хотелось более универсального и простого решения, чем писать подобный рецепт под каждый модуль.
В итоге я остановился на py2exe, т.к. с ним удалось решить все вышеназванные проблемы. Поскольку на это ушло довольно-таки значительное время, то хочу с вами поделиться — может кому тоже понадобится.
Первая проблема состоит в том, что практически все сборщики бинарных «дистрибутивов» python-приложений, такие как py2exe, bbfreeze, cx_Freeze, и другие, забирают из таких модулей только *.py файлы. Вторая проблема возникает со сложными namespace-модулями, такими как ETS — часто сборщик не может правильно разобрать все их внутренние зависимости.
Конкретно в моем случае камнями преткновения оказались все модули ETS (mayavi, chaco, и т.д.), m2crypto, vtk, h5py, matplotlib и несколько других (вообще, как выяснилось, таких модулей очень много).
Я попробовал протестировать разные сборщики и поначалу остановился на cx_Freeze, т.к. он единственный умеет более-менее правильно импортировать ETS «из коробки». Однако, его оказалось недостаточно: он не смог справиться с другими нестандартными модулями, а также по ряду других причин (к примеру, мне так и не удалось скрыть окно консоли, поставить кастомную иконку, и пр.). Конечно, там есть механизм «рецептов» (совсем не документированный), который даже работает, к примеру, для matplotlib, но хотелось более универсального и простого решения, чем писать подобный рецепт под каждый модуль.
В итоге я остановился на py2exe, т.к. с ним удалось решить все вышеназванные проблемы. Поскольку на это ушло довольно-таки значительное время, то хочу с вами поделиться — может кому тоже понадобится.
+28
Как я боролся с кодировками в консоли
6 min
173KВ очередной раз запустив в Windows свой скрипт-информер для СамИздат-а и увидев в консоли «загадочные символы» я сказал себе: «Да уже сделай, наконец, себе нормальный кросс-платформенный логгинг!»
Об этом, и о том, как раскрасить вывод лога наподобие Django-вского в Win32 я попробую рассказать под хабра-катом (Всё ниженаписанное применимо к Python 2.x ветке)
Об этом, и о том, как раскрасить вывод лога наподобие Django-вского в Win32 я попробую рассказать под хабра-катом (Всё ниженаписанное применимо к Python 2.x ветке)
+49
Рисуем виджеты в заголовке окна
3 min
12KНи для кого не секрет, сегодня у населения в основном преобладают широкоформатные мониторы и они вынуждены экономить количество пикселей по вертикали. Это породило моду на рисование элементов управления прямо в заголовке окна. Сейчас этим уже никого не удивишь, но, тем не менее, нигде ещё не находил решения этой проблемы на Qt, поэтому сейчас мы будем это исправлять:


+94
О том, как я заставлял Ubuntu работать 10 часов от батареи
11 min
195K
О том, как заставит ноутбук работать под линуксами как можно дольше, написано немало, в том числе и на хабре. В какой-то степени я еще раз соберу все советы воедино, от очевидных до обскурных, заодно опишу несколько проблем и решений, которые у меня оказались достаточно «индивидуальными».
Устанавливал я Ubuntu 10.10 на ноутбук Acer Aspire Timeline 5810TG. Эта машина обладает экраном в почти 16 дюймов и относительно производительным железом, зато батарея достаточно емкая, чтобы ставить с ней личные рекорды.
+274
Реализация настоящего 3D эффекта в своих проектах
3 min
8.1K
Сегодня я попробую без nVidia 3D Vision, специальных очков и 120Hz монитора добиться настоящего 3D картинки. Работа будет произведена с помощью графической библиотеки GLScene для Delphi/Lazarus/Borland C++ на ПЭВМ с посредственными характеристиками. Вы можете повторить указанные действия, используя фотоаппарат, программы с функцией моделирования 3D изображения (например, MathCAD, Maya, etc) или любым GAPI. В конце статьи мы должны получить объемное изображение вне монитора, к которому можно будет «прикоснуться». Это не революция в технологиях, а простой стереоскопический эффект, который в быту является небольшой, но полезной для зрения забавой.
+32
Первые шаги для пауэршельшиков
Easy
12 min
463KTutorial
Привет всем из 2023 года!
Я написал эту статью 12 лет назад. И внезапно — это — моя самая популярная статья. Я так же удивился что люди до сих пор заходят сюда и читают эту статью. Поэтому я решил её обновить. И после прочтения понял, что обновлять ничего не буду.
Да, powershell обновился за последние годы. Теперь он стал Powershell Core, и его можно запускать как на Windows, так и на Linux и MacOS. В скриптах появилось много плюшек, но основная идея осталась той же.
Если вы только начинаете писать на Powershell эта статья для вас. Вам будут даны основные понятия, которые относятся к Powershell в 2023 году, и которые позволят вам погрузиться в эту оболочку с головой.
Приди ко мне брате в Консоль!
— Админ Долгорукий.
Много ярлыков улетело в корзину со времён выхода в свет 2008 Windows. Люди попроще дивились новому синему окошку, которое ребята из Майкрософт зачем-то вставили в свои новые продукты. Люди, которые сидят на блогах и знают программирование начали изучать это окошко.

В итоге к народу начало приходить осознание того, что Майкрософт действительно разработали что-то новое и интересное.
И так, зачем вам это нужно? В основном, программа под названием PowerShell (в дальнейшем PS) предназначена для администраторов и программистов. Она позволяет автоматизировать примерно 99% всех действий в системе. С помощью неё вы можете настраивать удалённые компьютеры, запускать и перезапускать сервисы и производить обслуживание большиства серверных приложений. Как выяснилось, возможности у программы потрясающие.
Конечно же, продвинутые пользователи найдут множество способов использования этого восхитительного синего окошка.
Задача этой статьи проста — показать вам малую долю возможностей PS и дать вам концептуальное понимание предмета. В действительности документации по предмету написано несметное количество, так что я не стремлюсь охватить всё. Я так же ознакомлю вас с набором утилит, которые позволят не вылезать из PS в принципе.
+183
Прощай, салфетки, или как избавиться от глянца ноутбука
4 min
47K
Тебе, %username%, нравятся глянцевые ноутбуки, на которых остаются следы от любого прикосновения? — Меня они очень раздражают.
Да, конечно, глянцевый ноутбук привлекательно смотрится на витрине: такой черный, красивый, блестящий, шикарный…. Однако, все мы знаем, что случается с этой красотой не то что через месяц, а через неделю активного использования. Никаких салфеток не напасешься, чтобы ноутбук выглядел не заляпанным, а все таким же шикарным.
Так что же делать с этим глянцем, кроме как закупить чистящие средства и те самые салфетки? Как вариант – выбросить продать и купить матовый. Но что, если нравится именно эта модель по остальным параметрам?
Еще один выход – ошкурить и превратить в матовый. Есть такие навыки, чтобы получилось аккуратно и без травм для любимой техники?
Ну и конечно, можно просто не обращать внимания, что каждое касание оставляет следы на крышке ноутбука, и заняться на досуге дактилоскопией: Кто трогал мой ноутбук? Кто сидел на моем стуле? А также забыть про мелкие очаровательные царапинки, которые со временем станут очень заметными на глянцевой поверхности.
+208
Нативные интерфейсы в Qt
11 min
67K
Эта статья посвящена программированию GUI на базе фреймворка Qt от Nokia. Мы рассмотрим способы разработки интерфейсов для нативного отображения на платформах Windows, Linux и Mac OS X.
Презентацию[1] вёл Йенс
От переводчика: далее, поскольку это
Итак, приступим. Каждое графическое окружение имеет свой свод правил (User Interface Guidelines, UIG) по созданию интерфейсов, предназначенных для этих окружений. Из основных можно отметить такие руководства как Windows User Experience Interaction Guideline, Apple Human Interface Guideline, KDE User Interface Guideline и GNOME HID. Каждое из этих руководств «определяет положение кнопочек и рюшечек» конкретного окружения. Фреймворк Qt, в свою очередь, осуществляет поддержку всех этих руководств, предоставляя разработчику возможность создавать программы с использованием виджетов, «подстраивающихся» под окружение.
+108
Алгоритм поведения привидений в игре Pac-Man
13 min
69KTranslation
Попробовал сделать перевод вчерашнего топика-ссылки на хабре. Заранее извиняюсь, если формулировки покажутся вам кривыми, я с удовольствием приму конструктивную критику. Поехали…
Мне кажется правильным начать этот блог с темы, которая вдохновила меня в первую очередь. Не так давно я наткнулся на статью Jamey Pittman «Pac-Man Dossier», в которой приводилось очень детальное описание механики игры Pac-Man. Она показалась мне очень интересной, поэтому этот сайт — попытка собрать такую же детальную информацию об остальных играх. Но в дань уважения я все же начну с Pac-Man, а в частности, с описания алгоритма поведения привидений. Это очень интересная тема и, надеюсь, мое объяснение будет немного более понятным и доступным, чем у Джейми, потому что я сосредоточусь лишь на поведении.
Об игре:
Мне кажется правильным начать этот блог с темы, которая вдохновила меня в первую очередь. Не так давно я наткнулся на статью Jamey Pittman «Pac-Man Dossier», в которой приводилось очень детальное описание механики игры Pac-Man. Она показалась мне очень интересной, поэтому этот сайт — попытка собрать такую же детальную информацию об остальных играх. Но в дань уважения я все же начну с Pac-Man, а в частности, с описания алгоритма поведения привидений. Это очень интересная тема и, надеюсь, мое объяснение будет немного более понятным и доступным, чем у Джейми, потому что я сосредоточусь лишь на поведении.
Об игре:
«В то время все доступные игры были очень жестокими — игры о войне и космических захватчиках. Не было ни одной игры для всех сразу, а особенно, которые понравились бы девушкам. Я хотел придумать «комическую» игру, которой могли бы наслаждаться даже девушки»
— Toru Iwatani, создатель Pac-Man
+200
Сохранил в .WWF — спас дерево!
1 min
27KВсемирный фонд дикой природы WWF издавна славится своим оригинальным подходом к агитации. Наверняка, многие помнят чёрное облако и «Пока не поздно».
Сейчас же WWF сделал акцию, которая не только поможет уменьшить вред, наносимый природе, но и заставит вас улыбнуться. Всемирный фонд решил бороться не с последствиями вырубки лесов, а с причинами. По их мнению, основной угрозой для деревьев являются принтеры, пожирающие бумагу в огромных количествах. А точнее, их пользователи, т.е. мы с вами.

Для этого они создали специальный формат файлов (расширение .wwf) – являющийся практически полным аналогом PDF, однако без возможности выводить документы на печать.
Почитать подробнее о формате и скачать софт для его использования можно на специально созданном сайте www.saveaswwf.com (пока правда доступна версия для пользователей Mac OS X 10.4+, но обещают в ближайшее время выложить версии и для других ОС).
Сейчас же WWF сделал акцию, которая не только поможет уменьшить вред, наносимый природе, но и заставит вас улыбнуться. Всемирный фонд решил бороться не с последствиями вырубки лесов, а с причинами. По их мнению, основной угрозой для деревьев являются принтеры, пожирающие бумагу в огромных количествах. А точнее, их пользователи, т.е. мы с вами.

Для этого они создали специальный формат файлов (расширение .wwf) – являющийся практически полным аналогом PDF, однако без возможности выводить документы на печать.
Почитать подробнее о формате и скачать софт для его использования можно на специально созданном сайте www.saveaswwf.com (пока правда доступна версия для пользователей Mac OS X 10.4+, но обещают в ближайшее время выложить версии и для других ОС).
+73
Экспорт QML файлов из Photoshop и GIMP
1 min
4.1KTranslation
Создание QML файлов — невероятно веселая задача, но довольно часто проблематично разбить замечательные Photoshop шаблоны, которые прислал вам дизайнер, в полностью готовый интерфейс Qt Quick. Было бы замечательно, если бы мы смогли автоматизировать этот процесс? Я тоже так подумал, и написал пару полезных скриптов. Первый — скрипт для Photoshop. Просто положите его совместно с другими скриптам, и у Вас появится новый пункт в меню «Export QML», с помощью которого можно перебросить сцену в один QML-файл с элементами Text или Image из каждого слоя. Скрипт также можно использовать и для векторной графики, поскольку в Adobe Illustrator есть удобная опция экспорта в Photoshop.
Я сделал небольшое демонстрационное видео, чтобы лучшее продемонстрировать, как это работает на практике:
Я сделал небольшое демонстрационное видео, чтобы лучшее продемонстрировать, как это работает на практике:
+30
Музыка из кейгенов. Как это работает?
4 min
36KЕще давно очень многих интересовал один вопрос: «Эта программа занимает всего 100 кб, что за музыку она воспроизводит? Как это работает?»
Так вот, называется это чудо – Трекерная музыка. И что самое главное – она занимает очень мало места, в отличие от .mp3 или .wav. В современных популярных ОС трекерные файлы (MOD, XM, S3M, IT и пр.) проигрываются большинством медиаплееров, например, Winamp, VLC, Amarok, Audacious и другими.
Скачать такую музыку можно, например отсюда — keygenmusic.net, или отсюда www.modarchive.org. Это отнюдь не единственные ресурсы, стоит только обратиться к поиску.
Для того, чтобы воспроизвести такую музыку в своей программе, нам потребуется минимальное знание C++, а также minifmod, доступный в исходниках. Как заявляют разработчики, minifmod добавит всего 50 кб к вашему exe-файлу (без учета сжатия).
Так вот, называется это чудо – Трекерная музыка. И что самое главное – она занимает очень мало места, в отличие от .mp3 или .wav. В современных популярных ОС трекерные файлы (MOD, XM, S3M, IT и пр.) проигрываются большинством медиаплееров, например, Winamp, VLC, Amarok, Audacious и другими.
Скачать такую музыку можно, например отсюда — keygenmusic.net, или отсюда www.modarchive.org. Это отнюдь не единственные ресурсы, стоит только обратиться к поиску.
Для того, чтобы воспроизвести такую музыку в своей программе, нам потребуется минимальное знание C++, а также minifmod, доступный в исходниках. Как заявляют разработчики, minifmod добавит всего 50 кб к вашему exe-файлу (без учета сжатия).
+52
Расширения для Opera: Кнопки, бэджи и всплывающие окна
4 min
4.3KTranslation
Вступление
Эта статья рассказывает о базовых шагах по созданию и управлению кнопками на панели браузера и различными их компонентами.
+23
Information
- Rating
- Does not participate
- Location
- Харьков, Харьковская обл., Украина
- Date of birth
- Registered
- Activity