понедельник, 26 декабря 2011 г.

Фильтры в Битриксе

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

Когда передаёшь в компонент имя переменной-фильтра через 'FILTER_NAME', Битрикс ожидает имя глобально доступной переменной. Там прямо в исходниках любого компонента можно увидеть вызов

global ${$arParams['FILTER_NAME']}
или, во всяком случае, аналог этого кода. А раз используется поиск переменной средствами ключевого слова global, то без шаманства можно забыть о таких интересных вещах, как динамическая генерация фильтра внутри объектов классов или вообще внутри любого lexical scope, отличающегося от глобального.

Сегодня же до меня дошёл смысл этого global. Фильтр надо просто сохранять как элемент массива $GLOBALS, вместе со всеми остальными глобальными переменными. Это, по-видимому, самый надёжный способ генерировать фильтр и передавать его имя в компонент.

Следующие две инструкции могут быть теперь вообще где угодно, как угодно глубоко внутри иерархии классов и/или стека вызовов:

$GLOBALS['similar_items'] = array(
 '=EXTERNAL_ID' => getSimilarItems($arResult)
);
$APPLICATION->IncludeComponent(
 "bitrix:catalog.section",
 "",
 Array(
...
  "FILTER_NAME" => 'similar_items',
...
 )
);

Я знаю, вы всегда мечтали хранить временные данные в глобальной области видимости, не правда ли?

Пиздец.

понедельник, 17 октября 2011 г.

Complex integration and Theta-functions in Haskell

Just posted two packages to the Hackage. My intentions to it was that from now everyone from Haskell community can simply google for "Haskell integration of complex functions" and It will be clear as a day that package complex-integrate provides them with needed functionality. Second package is a library with implementation of Theta functions. Hope it helps someone. Details below.

понедельник, 26 сентября 2011 г.

Дефис в названии базы данных MySQL

Кстати, а вы знаете, что если в MySQL в названии базы данных есть дефис, то вы просто так не сможете её удалить? %)


mysql> drop database xxx-dev;
ERROR 1064 (42000): You have an error in your 
SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax 
to use near '-dev' at line 1

Надо, оказывается, окружать название БД back-tick'ами:


mysql> drop database `xxx-dev`;
Query OK, 55 rows affected (0.13 sec)

Решение найдено в описании MySQL Bug #461. Создаются базы данных с дефисами в названии без проблем.

Some publishing work on AFCALC

Today I am packaging some modules used by AFCALC and my own writings.

In the AFCALC GitHub repo I am placing the Wiki page which lists every external link relevant to the project. Also I plan to write a short article explaining what's going on in AFCALC to the wide public.

Initial paper which was used as an article accompanying my diploma project was uploaded to Scribd: Numerical Modelling of the 2D Explosion of the Elliptic Charge using the Multithreading

Integration module which bundled with AFCALC will be published with the name Data.Complex.Integrate to the HackageDB.

Theta module which bundled with AFCALC and used by the reference model will be published with the name Numeric.Functions.Theta to the HackageDB.

I'll cabalize Integrate and Theta right after finishing this post.

суббота, 17 сентября 2011 г.

Учёт логинов в MySQL базе данных часть 2: поиск прямо из Bash

Собственно, как я и ожидал, учёт логинов в MySQL базе данных ужасно неудобен, когда надо срочно быстро вспомнить логин/пароль для какого-то сайта. Даже при наличии дополнительной функции find_login всё равно нужно сначала запускать mysql-клиента, заходить в базу данных... долго. Надо быстрее.


Status update of AFCALC development

Well, AFCALC development goes smoothly and I reached the important milestone. Code base substantially shrunk — I was mostly fixing bugs, not adding features.

AFCALC now equipped with one testing model with exp() as transforming function and one real-world model of explosion made in 1970's by Kotlyar L. M.. It's successfully plotting the simplified version of Kotlyar's model, and it is very promising result.


понедельник, 5 сентября 2011 г.

PHP: Text trimming, value dumping and MIME encoding

While working on various web projects written completely in PHP, I collected some custom procedures for more satisfying work.


Как посмотреть список сработавших почтовых событий в Битрикс

В 1С:Битрикс используется относительно удобный способ отправки почтовых сообщений в ответ на различные события в системе. Фактически, функция CEvent::Send() заменяет собой встроенный в PHP mail().

Однако, в административной панели нет никакого способа посмотреть список сработавших событий, что бывает важно, если вы видите, например, что письма явно не доходят, хотя событие очевидно срабатывает.

Для того, чтобы добраться до этого списка, нужно покопаться напрямую в таблицах БД Битрикса. В админке в разделе Настройки → Инструменты → SQL-запрос, нужно выполнить следующий запрос:


select * from b_event 
  where event_name like '%form%' 
  order by date_insert desc

via: Bitrix FAQ

понедельник, 29 августа 2011 г.

Как зафиксировать положение фона на веб-странице при уменьшении размера окна браузера

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

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

Решение данной проблемы довольно простое. Спасибо aackose за статью "Large CSS background moves on resize, in IE 8"

суббота, 27 августа 2011 г.

The ALCALC — Mathematical modelling of explosions, filtration processes and electrochemistry as liquid flows

My current science research (in pursue of Ph.D degree) is in field of mathematical physics. I am doing some cool stuff with representing the processes of explosion, filtration and electrochemistry as flows of ideal liquid. There are some hard-boiled math with Complex Complex-value functions. Project is a program in Haskell to be able to set initial parameters and get a schematic chart representing the final area and edges of process. Finding precise form of edges (coordinates of points at edges) is the current goal.

To make my work public I set up a project at GitHub. Just updated it with READMEs and such. You may look at draft theses in article/ directory. They are in Russian, however. I plan to make an international version when there will be enough material.

Project is here: AFCALC at GitHub.

Here I, as usual, will record some useful commands for using Git to not forget them.

суббота, 6 августа 2011 г.

Учёт логинов в MySQL базе данных

Иногда связок логин/пароль становится так много, что даже записанные на отдельной бумажке (в отдельном текстовом файле) они занимают больше экрана места. Вчера меня это достало и я воспользовался тем, что на моей машине работает MySQL сервер. Сегодня мы с вами делаем простую систему для учёта учётных записей в MySQL базе данных.

пятница, 1 июля 2011 г.

Вот так вот сессия кончится, а у тебя есть что почитать. ;)

Решил написать тебе список кое-каких ресурсов, откуда можно почерпнуть кое-какие сведения. :)

Исхожу от предпосылок, что тебя интересует:
  1. Разработка компьютерных игр
  2. Веб-разработка
Как и меня.

По веб-разработке.

Верстать HTML+CSS+JS можно легко научиться по Opera Web Standards Curriculum. Там учат только best practices, ты будешь в хороших руках. :)

Справочник по HTML+CSS, который я считаю нормативным, это htmlbook.ru
Умение аккуратно пользоваться CSS приходит только с опытом.

По яваскрипту есть замечательный сайт учебного характера javascript.ru. Кроме этого, только сегодня нашёл огромный гайд по Javascript от Mozilla Foundation,  он такой огромный, что я уверен, дочитав его до конца, становишься гуру жабоскрипта. :) Справочник по яваскрипту как таковой отсутствует, потому что большая часть функций берётся из DOM, здоровенного трёхуровневого словаря функций, предназначенных для работы с HTML-страницей.

Сам я чистым яваскриптом почти никогда не пользуюсь, пользуюсь jQuery. Вот справочник функций jQuery. К jQuery написаны также две дополнительные большие библиотеки -- это jQuery UI, и jQuery Tools. jQuery Tools используется в моей работе постоянно, потому что всем нужны слайдеры и всплывающие диалоговые окна. :)

Только после полноценного знакомства с традиционным HTML десятилетней давности, рекомендую переходить на чтение HTML5 — Edition for Web Developers. Сам я только ещё готовлюсь к этому шагу в будущее, потому что IE 6, 7 и 8 и даже 9 поддерживают HTML5 никак. :(

Для работы на бэк-энде тебе настоятельно мною рекомендуется язык PHP, и, соответственно, "официальный" гайд по PHP (сам я его никогда не читал полностью, только частями). Если у тебя уже развёрнут XAMPP и ты можешь добраться до index.php в каталоге сервера через http://localhost/index.php, то уже можешь начинать кодить на PHP, всё нужное уже настроено и работает. :)

В качестве каркаса для веб-приложений на PHP я очень-очень рекомендую Yii, это зверский очень удобный, но очень хардкорный каркас. Нахрен Джумлу. Вот руководство по Юи, в виде туториала от простого к сложному. Хотя предупреждаю, что Юи --- это не система управления контентом, а каркас веб-приложения (одним предложением: админку придётся делать самостоятельно).

Впрочем, в России огромное количество коммерческих сайтов сделано на 1С-Битриксе. Кучу денег может принести одно только сопровождение веб-сайтов, построенных на 1С-Битриксе. Поэтому, становятся крайне полезными два справочника: документация для разработчиков и пользовательская документация. В этих священных писаниях собрано описание всех внутренностей Битрикса.

Возможно, для настройки веб-сайта в XAMPP тебе пригодится моя статья про настройку локального Apache на виртуальные хосты. ;) Хотя вряд ли, если честно.

До сих пор при вёрстке веб-сайтов приходится учитывать особенности Интернет Эксплорера, вот статья про то, как справляться с некоторыми самыми частыми багами IE6, вот полная коллекция багов IE6,7&8. Кстати, само по себе зрелище то ещё. :)

По созданию дизайна веб-сайта в Фотошопе вот тебе три сборника ссылок (с картинками): первый набор туториалов по рисованию сайтов, второй набор туториалов, третий набор. Это я ещё сам не читал, будете с Ингой меня превосходить. :)

Про веб-разработку вроде всё вспомнил.

По разработке компьютерных игр.

Здесь пойду в обратную сторону.
Недавно в Сети нашёл замороженный проект perfectstorm --- один парень делал RTS на Common Lisp с использованием OpenGL. Я выпросил у чувака исходники и успешно их скомпилировал. В моей голове роятся мысли о том, чтобы изучить эти исходники и понять, как оно вообще работает --- там в проге по полю двигаются юниты, стреляют друг в друга, выделяются рамочкой и есть рудиментарный AI с pathfinding'ом, вполне себе RTS.


Для понимания того, как это работает, надо знать две технологии. Первая это сам язык Common Lisp, вторая это OpenGL.

Для понимания того, зачем именно Common Lisp, рекомендуется вот эта статья и вот эта статья и вот эта самая большая и подробная статья. Для изучения Common Lisp рекомендуется книга Practical Common Lisp, доступна вся онлайн, я прочитал уже 19 глав.

Для изучения OpenGL я нашёл для себя OpenGLBook.com, это сборник из 4 огромных статей, показывающих "на пальцах", каково это --- программировать компьютерную графику с использованием OpenGL.
Вообще я так понял, что в первую очередь нужно знать, как делается графика в играх, потому что это самое сложное и комплексное (и востребованное), а потом уже всё остальное.

Есть две технологии работы с компьютерной графикой: использование OpenGL и использование DirectX. DirectX, понятное дело, работает только на Windows. Однако, для него есть такая штука, как DirectX Software Development Kit (DirectX SDK), который свободно можно скачать и пользоваться. Там должен быть компилятор сразу, куча туториалов, документация --- всё, что хочешь. У фирмы Nvidia есть Nvidia Graphics SDK, он, должно быть, учитывает особенности их видеокарт, но я думаю, можно покопаться в коде и запустить его и под ATI'шной видюхой.Есть и Nvidia SDK для DirectX и Nvidia SDK для OpenGL. У ATI(AMD) ничего подобного не нашёл.

Собственно, пока только эти две книги по кодингу читаю. Когда вкурю, что к чему, дам больше ссылок.

Так как я хочу делать мультиплатформенные игры и вообще программы, то возникает вопрос ещё о том, как выводить GUI (есть разные библиотеки) и звук. :)

Пока всё, успехов там.

Марк
29 июня 2011
04:11

понедельник, 6 июня 2011 г.

Как изменить кодировку имён файлов

Работая с коллегами, пользующимися альтернативными операционными системами, :) временами приходится иметь дело с файлами, имена которых повредились после передачи через Сеть. Моя Debian-система работает на LANG=ru_RU.UTF-8, так что самая частая головная боль — это кодировка cp1251, тяжёлое наследие Windows98 в России.

К моему личному великому удовольствию, в Debian присутствует утилита, которая позволяет изменить кодировку имён файлов, которые уже лежат на вашем жёстком диске. Она называется convmv.

Дополнительно, бывает проблема получить читаемый список файлов на FTP-ресурсах, где выставлена кодировка, отличающаяся от UTF-8. Для Krusader, которым я пользуюсь в качестве FTP-менеджера по умолчанию, всё решается элементарным пунктом меню «Вид» -> «Выбрать кодировку».

воскресенье, 29 мая 2011 г.

Конфиг к EMACS

После некоторого времени использования замечательного текстового редактора EMACS становится понятно, что его не только можно переконфигурировать, но даже более того: для удобной работы совершенно необходимо его переконфигурировать. Все пишут свои конфиги к EMACS; и я, пожалуй, также объясню свой.


среда, 18 мая 2011 г.

Как развернуть многосайтовый Apache2 на локальной машине с Debian

Для веб-разработки, особенно если ты фрилансер, бывает необходимо вести одновременно несколько веб-сайтов, и держать, соответственно, их девелопмент-версии на локальной машине. Настроить локальный Апач в Debian 6.0 довольно просто, надо только догадаться, как. :)

воскресенье, 15 мая 2011 г.

Если Firefox долго ждёт подключения к сайту

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

При попытке залогиниться на blogger или даже просто открыть картинку из выдачи результатов поиска по изображениям в Гугле (!) браузер спотыкается на шаге ожидания результатов с сервера. Выводит «waiting for google.com» в строке состояния и всё. Иногда по тайм-ауту дело кончается тем, что Фаерфокс показывает белый экран и всё. Те же симптомы проявляются при попытке загрузить какое-нибудь изображение куда-либо, вообще любой файл. Отправка сообщений в дурацком Вконтакте так же «виснет».

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

вторник, 10 мая 2011 г.

Как вручную установить драйвера NVIDIA в Debian Squeeze

Если честно, ничего особенно страшного нет в том, чтобы установить в Debian Stable (на данный момент это 6.0, «Squeeze») драйвера NVIDIA с официального сайта, а не с репозитариев.

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


суббота, 7 мая 2011 г.

Какие плагины устанавливать в Firefox

Да-да, я толстый тролль, вы совершенно правы. :) Мне физиологически не нравится Firefox как он есть, и к моему большому сожалению, в Debian предполагается использование только его (под названием Iceweasel, но это совершенно неважно).

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

Разберёмся, какие плагины действительно нужны в Firefox как веб-браузере.

Как сверстать титульник дипломной работы в LaTeX

Сабж лежит здесь: Титульная страница дипломной работы [.tex] [1 KB]

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

Шаблон документа LaTeX для статьи по прикладной математике

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

Как отображать только иконки в Панели закладок в Firefox

В Firefox наличествует крайне удобный тулбар, на который можно перетаскивать закладки и потом вызывать их нажатием одной кнопки. Это всё очень круто, но с этим тулбаром связана одна проблема: даже в режиме «отображать только иконки» на этом тулбаре отображаются подписи к иконкам. Когда ссылок становится больше 10, место кончается, вместе с удобствами.

Собственно, эта проблема решается очень просто, главное знать, как. :)

Как запускать Emacs в клиент-серверном режиме

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