Как стать автором
Обновить
23
0
Петухов Михаил @OldFornit

Пользователь

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

Функциональное программирование в среде 1С: Предприятие 8

Время на прочтение 4 мин
Количество просмотров 5.8K
В последнее время наметилась тенденция прникновения идей функционального программирования в массы. Для меня, как программиста 1С, интереснее всего повышение уровня абстракции при работе с табличными данными. Одно дело кодировать циклы со множеством переменных, которые меняют свое значение от итерации к итерации, а через месяц надо проводить «отладку глазами» (а то и на самом деле отладчик запускать), чтобы понять как эти циклы работают. Гораздо изящнее использовать готовые отлаженные алгоритмы, которые можно применить к таблице в целом, и получить ожидаемый результат.

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

Примерно 2 года назад я начал писать библитеку универсальных функций, которые применял в повседневной работе. Практика убедила меня, что подход работает, и приносит ощутимую пользу. А совсем недавно я открыл для себя язык LINQ, который используется на платформе .NET для унифицированной работы с коллекциями, формирования SQL-запросов и других полезных вещей. Я завидую белой завистью шарперам, у которых есть такой замечательный инструмент!

Изучив библиотеку стандартных операторов запроса, которая составляет ядро LINQ, я решил написать аналогичную библиотеку для 1С Предприятия 8.
Читать дальше →
Всего голосов 40: ↑30 и ↓10 +20
Комментарии 43

Как подружить Kohana с nginx и PHP FastCGI

Время на прочтение 1 мин
Количество просмотров 2.3K
Так как для nginxa понятие .htaccess в прямом виде отсутствует для корректной обработки URLов фреймворком Kohana приходится писать собственный конфиг для nginx.

Читать дальше →
Всего голосов 21: ↑10 и ↓11 -1
Комментарии 7

Божественная безупречность

Время на прочтение 5 мин
Количество просмотров 486
На Хабре, все притчи о том как надо жить, эта же о том зачем. Это конечно мои личные выводы, надеюсь каждый найдёт что-то своё. К сожалению автора не знаю, но если понравится, в upd добавлю ещё одну не менее жизнеутверждающую.
светлая история в стиле жж
Всего голосов 60: ↑54 и ↓6 +48
Комментарии 9

Двухсторонняя синхронизация Google календаря Kontact KDE

Время на прочтение 1 мин
Количество просмотров 995
Основано на хабратопике откуда собственно и узнал о замечательной утилите GCALDaemon. Огромное спасибо ColdFlame
Качаем собственно утилиту.
Установка достаточно проста содержимое архива копируется в /usr/local/sbin, устанавливаются права:
chgrp -R groupname /usr/local/sbin/GCALDaemon
chmod -R g+w /usr/local/sbin/GCALDaemon
chmod 755 /usr/local/sbin/GCALDaemon/bin/*.sh

Все, можно приступать к настройке.
/usr/local/sbin/GCALDaemon/bin/config-editor.sh
Вкладка — HTTP synchronizer, жмем Google account. Вкладка File synchronizer — включаем синхронизацию, Кнопка New — добавляем календари, и запоминаем (указываем новый) путь к файлу синхронизации.
Не забываем /usr/local/sbin/GCALDaemon/bin/standalone-start.sh прописать в автозагрузку.
В календаре указываем новый источник file, прописываем путь.
Ура, все работает)
В качастве бонуса- поиск в адресной книге Gmail из KAddressBook.
/usr/local/sbin/GCALDaemon/bin/config-editor.sh вкладка LDAP server, ставим галочку «включить», выбираем свой почтовый ящик, закрываем с сохранением.
На машине Kontact — KAddressBook — Настройка — Каталоги LDAP — Новый сервер. Прописываем 127.0.0.1, «OK» Теперь из адресной книги доступен поиск в книге Gmail как в каталоге LDAP.
Успешно используется на работе (OpenSUSE) и дома (Kubuntu)/
Всего голосов 9: ↑6 и ↓3 +3
Комментарии 1

Ошибочное толкование авторского права.

Время на прочтение 21 мин
Количество просмотров 4.6K
Я надеялся что кто-нибудь с большим литературным даром нежели мой сподобится перевести фундаментальную статью, в которой объясняется и доказывается (со ссылками) что есть такое на самом деле авторское право и почему оно такое есть. Но прошло несколько лет, никто этого сделать не сподобился и я, в конце концов, решился. Статья переведена нахрапом, в переводе наверняка есть ошибки, если обнаружите — напишите мне в приват, я исправлю.

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

Она показывает, что авторское право — вещь, в сущности, нужная и полезная, но сравнивать его нужно не с неотчуждаемыми правами типа права владения имуществом, а скорее с соглашениями о разделе продукции когда общество временно передаёт права на нечто, безусловно принадлежащее ему (в случае с СРП — содержание земных недр, в случае с авторским правом — свободу граждан) в обмен на то, что оно считает полезным для себя (деньги — в случае с СРП, книги/музыку/фильмы/программы/etc — в случае с авторским правом) так как не владеет средствами производства (для добычи ископаемых нужна особая техника, для создания произведений искусства — талант). Основное содержание статьи — объяснение того, «как мы дошли до жизни такой», когда соглашение начинает напоминать историю с пресловутым «школьным порталом» (то есть мы отказываемся от кучи прав на многие десятки лет — а взамен получаем некоторое количество попсы и бульварной литературы в основном).

Итак, статья
Всего голосов 52: ↑45 и ↓7 +38
Комментарии 108

Немного о деревьях

Время на прочтение 3 мин
Количество просмотров 27K

Вступление


Встречалась ли вам ситуация, когда необходимо реализовать хранение древовидной структуры в реляционной БД?

PostgreSQL on tree

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

В данном топике мы с вами поговорим об одной из тех возможностей, которые существуют для организации хранения деревьев в PostgreSQL — ltree.
Читать дальше →
Всего голосов 86: ↑84 и ↓2 +82
Комментарии 54

Элемент Zend_Form для выбора изображения

Время на прочтение 5 мин
Количество просмотров 2.1K
Здравствуйте. Без долгих вступлений, хочу показать как выглядит элемент, о создании которого я собираюсь рассказать:

Элемент Zend_Form RadioImage

Я решил назвать это RadioImage.
Читать дальше →
Всего голосов 38: ↑30 и ↓8 +22
Комментарии 37

Новый пуленепробиваемый синтаксис @font-face

Время на прочтение 3 мин
Количество просмотров 71K
С самого начала «вебошрифтовой революции» мы полагались на неизящные хаки деклараций @font-face, чтобы шрифты из Паутины загружались во всех браузерах. Может ли существовать лучший путь? Вполне изящный и совместимый с будущими браузерами?

Вкратце об истории вопроса


В сентябре 2009 года Пол Айриш (Paul Irish) огласил пуленепробиваемый синтаксис для записи деклараций @font-face. Синтаксис был компактным и в то время действовал во всех браузерах. Недавно стали поступать, со временем усиливаясь, жалобы на отказ шрифтов загружаться в Android — поэтому мы стали вместо того рекомендовать синтаксис «Mo' Bulletproofer», сочинённый Ричардом Финком (Richard Fink). К сожалению, синтаксису «Mo' Bulletproofer» требуется двойная запись деклараций, так что поддержка его сложнее.

Синтаксис Fontspring @Font-Face


А вот таким этому коду следовало бы быть с самого начала. Чистым, ясным и простым:
@font-face {
	font-family: 'MyFontFamily';
	src: url('myfont-webfont.eot?') format('eot'), 
	     url('myfont-webfont.woff') format('woff'), 
	     url('myfont-webfont.ttf')  format('truetype'),
	     url('myfont-webfont.svg#svgFontName') format('svg');
	}

Что? Я не понял.


Хак Трюк, заставляющий этот код заработать — символ «?» вслед за именем файла EOT. Без шуток.

Как это срабатывает


Читать дальше →
Всего голосов 141: ↑132 и ↓9 +123
Комментарии 42

Обновлён ModularGrid — удобный инструмент для HTML-верстальщиков

Время на прочтение 1 мин
Количество просмотров 2.6K
Демо-страница
Спешу сообщить, что наконец-то обновил ModularGrid — небольшой javascript, который рисует гайды и модульную сетку поверх вёрстки:
  • появилась панель с контролами для тех, кто не любит хоткеи;
  • состояние сетки теперь сохраняется в cookie;
  • было исправлено несколько досадных ошибок.

Демо-страница | проект на GitHub | предыдущая статья
Всего голосов 72: ↑66 и ↓6 +60
Комментарии 44

Уязвимость связки PHP+nginx с кривым конфигом

Время на прочтение 1 мин
Количество просмотров 60K

Summary


Announced: 2010-05-20
Credits: 80sec
Affects: сайты на ngnix+php с возможностью загрузки файлов в директории с fastcgi_pass




Background


Зачастую How-To по настройке связки nginx с php-fpm / php-cgi есть подобные строчки:

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    include fastcgi_params;
}

Читать дальше →
Всего голосов 163: ↑146 и ↓17 +129
Комментарии 109

Ошибки конфигурирования nginx (или как правильно писать рерайты)

Время на прочтение 4 мин
Количество просмотров 98K
Привет, хабралюди!

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

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

Ошибка номер 1, самая фатальная.
Всего голосов 92: ↑88 и ↓4 +84
Комментарии 56

Named scope для Zend Framework

Время на прочтение 3 мин
Количество просмотров 1.4K
Работая с базой, постоянно приходится писать множество методов поиска. Вот типичный сценарий:

Предположим, что нам надо выводить список пользователей на сайте. Вначале это может быть так — $user_table->fetchAll(). А если нужно выводить только девушек? Напишем метод getFemaleUsers(). А только тех, кто не забанен и имеет аватарку? А вывод в админке только девушек, но без учета статуса пользователя?

В конце концов мы получим вагон методов, которые частично друг друга перекрывают или вообще делают одно и тоже, а различается только сортировка. А ведь их еще нужно тестировать…

Читать дальше →
Всего голосов 51: ↑44 и ↓7 +37
Комментарии 77

Включаем IPv6 на dd-wrt

Время на прочтение 2 мин
Количество просмотров 13K
Если верить статистике на сайте tunnelbroker.net то до исчерпания пула IPv4 адресов осталось полтора года. И я решил рассказать как перевести свой маршрутизатор под управлением dd-wrt на новый протокол. Тестировалось на Dir-320, но должно работать и на любом другом ашан-роутере, который поддерживается dd-wrt.
Пынг!

Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 9

Emacs Starter Kit

Время на прочтение 8 мин
Количество просмотров 15K
Emacs. Большая и сложная программа. Ему как ничему другому подходит это определение. Эмакс был создан очень давно в лаборатории искуственного интллекта MIT, он несет в себе гены очень своеобразной культуры лисп-хакеров былых времен. С тех пор он не раз переписывался, улучшался, дополнялся и обрастал тысячами расширений в течение десятков лет. Эмакс, если и был когда-то мощным текстовым редактором, сейчас стал некоей универсальной программой, в нём можно делать абсолютно всё что угодно, если это хотя бы немного затрагивает собой задачу отображения или редактирования текста, и даже больше. Людям знающим универсальность играет на руку, ведь одной программой можно делать тысячу разных дел, при этом не прилагая усилий для переучивания к разным интерфейсам. Людей, впервые запустивших эмакс подобная универсальность и непривычный интерфейс поначалу пугает. Научиться пользоваться эмаксом, понять его идею и проникнуться ею задача непростая, трудоемкая и долгая (как говорится, пологая кривая обучаемости).
Читать дальше →
Всего голосов 84: ↑79 и ↓5 +74
Комментарии 76

Миграция с Ext3 на Ext4

Время на прочтение 6 мин
Количество просмотров 18K
Эта статья для тех кто хочет перейти с с файловой системы Ext3 на Ext4, при этом сохранить все свои файлы и каталоги. Постараюсь описать наиболее общие ошибки возникающие в процессе миграции с Ext3 на Ext4, не устанавливая систему заново.

Основания для перехода.


Объяснение преимуществ и недостатком Ext4 выходит за рамки этой статьи (воспользуйтесь поиском по хабрутут это есть). Если вы не страдаете от ограничений накладываемых Ext3 и не готовы рискнуть и просто так перейти на Ext4 то очень хорошо подумайте, а нужно ли это вам? ;) С другой стороны, перейдя на Ext4 вы можете почувствовать прирост производительности вашей файловой системы и увеличить её надёжность, при этом не понеся никаких накладных расходов ;)
Читать дальше →
Всего голосов 55: ↑50 и ↓5 +45
Комментарии 43

UML, Классы и Отношения

Время на прочтение 10 мин
Количество просмотров 66K
Существует много разработанных теорий, задокументированных технологий и парадигм программирования. Перед тем как углубиться с головой в их изучение было бы мудро изучить сам принцип взаимодействия программ и их структур. UML предлагаем вам разработанный стандарт что бы сделать это.

подробности
Всего голосов 85: ↑66 и ↓19 +47
Комментарии 46

nginx как reverse proxy

Время на прочтение 1 мин
Количество просмотров 40K
Несколько читателей блога webo.in просили меня выложить конфигурацию связки nginx + Apache, на которой работает сервер. Хотя это и не относится напрямую к теме клиентской оптимизации. Однако, большинству специалистов, занимающихся клиентской оптимизацией, будет интересно узнать о настройке нескольких хостов для выдачи статики и пара других трюков, связанных с балансировкой запросов.

Также я подробно комментирую все настройки конкретно Apache, которые так или иначе относятся к самой оптимизации времени загрузки страниц.

читать дальше на webo.in →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 46

Яндекс.Интернет, как верстали макет

Время на прочтение 1 мин
Количество просмотров 2K
Заглянув в код страницы internet.yandex.ru, увидел интересную штуку:
< — NOTE: Не подключать в production -->

Сам яваскрипт в файле оказался следующим
Читать дальше →
Всего голосов 190: ↑186 и ↓4 +182
Комментарии 53

Modalbox — создаем диалоговые окна

Время на прочтение 1 мин
Количество просмотров 3.2K
modal

Modalbox — библиотека на prototype и script.aculo.us для создания диалоговых окон и мастеров, обьем ее кода всего 10кб. На мой взгляд это настоящий атрибут веб два нольности.
Читать дальше
Всего голосов 29: ↑25 и ↓4 +21
Комментарии 34

Написание приложений, основаных на Qt, на языке Python

Время на прочтение 5 мин
Количество просмотров 119K
Доброе время суток.
Недавно решил изучить ещё один язык программирования. Выбор пал на python. Написал несколько маленьких скриптов. Но прежде всего я хотел писать приложения с графическим интерфейсом. В интернете наткнулся на этот небольшой туториал, прочтение которого вылилось в предлагаемый Вашему вниманию перевод. Надеюсь, что кому-нибудь он будет полезен.


Это руководство нацелено на получение представления о том как писать маленькие приложения на python, использующие библотеку Qt.

Читать дальше →
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 34

Информация

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