Pull to refresh
23
0
Петухов Михаил @OldFornit

User

Send message

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

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

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

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

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

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

Reading time5 min
Views492
На Хабре, все притчи о том как надо жить, эта же о том зачем. Это конечно мои личные выводы, надеюсь каждый найдёт что-то своё. К сожалению автора не знаю, но если понравится, в upd добавлю ещё одну не менее жизнеутверждающую.
светлая история в стиле жж
Total votes 60: ↑54 and ↓6+48
Comments9

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

Reading time1 min
Views1K
Основано на хабратопике откуда собственно и узнал о замечательной утилите 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)/
Total votes 9: ↑6 and ↓3+3
Comments1

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

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

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

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

Итак, статья
Total votes 52: ↑45 and ↓7+38
Comments108

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

Reading time3 min
Views27K

Вступление


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

PostgreSQL on tree

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

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

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

Reading time5 min
Views2.1K
Здравствуйте. Без долгих вступлений, хочу показать как выглядит элемент, о создании которого я собираюсь рассказать:

Элемент Zend_Form RadioImage

Я решил назвать это RadioImage.
Читать дальше →
Total votes 38: ↑30 and ↓8+22
Comments37

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

Reading time3 min
Views71K
С самого начала «вебошрифтовой революции» мы полагались на неизящные хаки деклараций @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. Без шуток.

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


Читать дальше →
Total votes 141: ↑132 and ↓9+123
Comments42

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

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

Демо-страница | проект на GitHub | предыдущая статья
Total votes 72: ↑66 and ↓6+60
Comments44

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

Reading time1 min
Views60K

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;
}

Читать дальше →
Total votes 163: ↑146 and ↓17+129
Comments109

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

Reading time4 min
Views98K
Привет, хабралюди!

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

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

Ошибка номер 1, самая фатальная.
Total votes 92: ↑88 and ↓4+84
Comments56

Named scope для Zend Framework

Reading time3 min
Views1.4K
Работая с базой, постоянно приходится писать множество методов поиска. Вот типичный сценарий:

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

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

Читать дальше →
Total votes 51: ↑44 and ↓7+37
Comments77

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

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

Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments9

Emacs Starter Kit

Reading time8 min
Views15K
Emacs. Большая и сложная программа. Ему как ничему другому подходит это определение. Эмакс был создан очень давно в лаборатории искуственного интллекта MIT, он несет в себе гены очень своеобразной культуры лисп-хакеров былых времен. С тех пор он не раз переписывался, улучшался, дополнялся и обрастал тысячами расширений в течение десятков лет. Эмакс, если и был когда-то мощным текстовым редактором, сейчас стал некоей универсальной программой, в нём можно делать абсолютно всё что угодно, если это хотя бы немного затрагивает собой задачу отображения или редактирования текста, и даже больше. Людям знающим универсальность играет на руку, ведь одной программой можно делать тысячу разных дел, при этом не прилагая усилий для переучивания к разным интерфейсам. Людей, впервые запустивших эмакс подобная универсальность и непривычный интерфейс поначалу пугает. Научиться пользоваться эмаксом, понять его идею и проникнуться ею задача непростая, трудоемкая и долгая (как говорится, пологая кривая обучаемости).
Читать дальше →
Total votes 84: ↑79 and ↓5+74
Comments76

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

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

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


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

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

Reading time10 min
Views67K
Существует много разработанных теорий, задокументированных технологий и парадигм программирования. Перед тем как углубиться с головой в их изучение было бы мудро изучить сам принцип взаимодействия программ и их структур. UML предлагаем вам разработанный стандарт что бы сделать это.

подробности
Total votes 85: ↑66 and ↓19+47
Comments46

nginx как reverse proxy

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

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

читать дальше на webo.in →
Total votes 4: ↑4 and ↓0+4
Comments46

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

Reading time1 min
Views3.2K
modal

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

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

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


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

Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments34

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity