Чтобы добавлять сообщения и комментарии, .

@OCTAGRAM:
OCTAGRAM

Fundamentals of the Icon programming language
Когда в твоих руках Icon, решение любой задачи похоже на перебор. На странице 78 примеры.
every write(!"ab", !"+-", !"cd"); # Примерно по такой методе я тесты на несколько мегабайт генерил
(0 to 20 by 2) = (0 to 20 by 3) # Экология? Нет, не слышал.
По сравнению с Prolog, даже такими диалектами, как Mercury, с нормальным синтаксисом функций, Icon — наиболее удобный язык программирования с откатами.

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

@OCTAGRAM:
OCTAGRAM

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

@OCTAGRAM:
OCTAGRAM

bitbucket.org
И ещё кое–что сегодня перестаёт быть моим ноу–хау.
Парсит журналы GreyLink, разбивает примерно по дням (на самом деле, с нахлёстом) и выводит их в виде HTML файлов в формате, похожем на журналы Jabber конференций на jabber.ru. Поддерживаются смайлы, магнитные ссылки для DC++, ники делаются ссылками в таком формате, в котором поддерживает GreyLink DC++. Некоторые слова можно в целях SEO или каких–то других делать ссылками куда надо. Все реплики имеют якорь. Если выбрать конкретную реплику и скопировать ссылку на таймкод перед этой репликой, это и будет ссылка на реплику. Так как в журналах GreyLink нет секунд, реплики внутри минуты нумеруются по порядку. Реализовано на языке Icon.
В штатном режиме обновляет только последний/предпоследний день, но может и обновить, начиная с произвольной даты. Когда это у меня последний раз работало, я запускал по часам каждые 5 минут.

Вот так выглядит результат: p2p.toom.su
А так выглядит оригинал, под который я косил: chatlogs.jabber.ru

Чего так и не сделал: не исправил косяк с определением дня недели, не сделал вывод логотипов провайдера и города, как в самом GreyLink ( assembla.com ), не сделал скрипт для GreyLink, чтоб когда картинку постят в чате, она выкачивалась автоматом без клика по ней, и чтоб потом вставленные таким образом в чат картинки попадали в HTML в конечном итоге.

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

@OCTAGRAM:
OCTAGRAM

bitbucket.org
Продолжаем выкладывать некоторые разработки, которые могут пригодиться. Собственно, есть такой проект, как FlyLink DC++ с установщиком, поддерживающим кучу провайдеров, и каждый уважающий себя провайдер стремится попасть в список поддерживаемых провайдеров, заказывает VIP или Mini-VIP установщики. При всём при этом FlyLink DC++ открытый, в том числе установщик, то есть, вместе с информацией обо всех провайдерах. Всё это замечательно, вот только информация о том, какие есть провайдеры и какие у них есть хабы, оказывается разбросанной по куче файлов (.iss Inno Setup Source, Favorites.xml, ...), да ещё по–разному для VIP и Mini-VIP. Мой конвертер, написанный на Icon, парсит всю эту разнородную информацию и выводит её в формате YAML, где её можно использовать самым разным образом. Версия примерно от 2011-10-06.
Предполагалось, что в моём установщике GreyLink DC++ OpenMod будет парсер YAML и возможность выбирать всех тех же провайдеров, что и в установщике FlyLink DC++. Собственно, парсер–то есть и он работает, но в нескольких местах получалась каша, которую надо было переделать. Так и не переделал.

@OCTAGRAM:
OCTAGRAM

bitbucket.org

Году так в 2009м исходя из той картины мира, которой я тогда руководствовался, я считал, что на языке Ада будет здорово писать, если будет полное WinAPI, чтоб и ACL поманипулировать, и оконными сессиями, и в пространство объектов NT забраться можно было. Win32Ada оставляли желать лучшего по охвату современного API. Делать я это намеревался не через сишные заголовки, в которых часть метаинформации безнадёжно потеряна, а вкрутив мозги джедаям. То есть, есть группа JEDI, которая делает неплохие привязки, но вот одна проблема, они это делают для Delphi, а не для Ada. Так как языки похожи, неплохо бы одно в другое сконвертировать, причём, по возможности, автоматом, и не AST в AST, а текст в текст.

Поначалу я пытался наладить конвертацию на препроцессоре GEMA, даже получилось, но это было явно больше, чем на что был расчитан GEMA, да и писать тяжело. Чем более зрелую реализацию пытаешься сделать, тем в большее количество ограничений упираешься. Для тех, кто не знает, там какое–то продвинутое программирование начинает становиться похожим на продвинутое программирование в bash. То есть, мы не можем сделать переменную x ассоциативным массивом, зато можем понаплодить переменных x[*], и работать дальше как будто у нас есть ассоциативный массив.

Решил поискать альтернативу. Смотрел в сторону GPP. Смотрел в сторону Refal. Как остановился на Icon, уже точно и не помню. Примерные соображения таковы, что когда–то раньше мне было интересно, чтобы «for а := 1 to 3 do B;» было не единым узлом синтаксического дерева, а чтоб 1 to 3 сам по себе что–то значил, присваивание было бы таким же присваиванием, как и в других местах, и for мог перебирать не только это, но и другие выражения, и как–то так получилось, что такой язык действительно есть, и так как он по описанию хорошо подходит для обработки текста, и в нём есть backtracking, его и решил взять. Так я и начал писать на Icon. Начало не из лёгких. Одно дело переписать что–нибудь с одного императивного языка на другой (а на Icon можно писать в императивном стиле). Другое дело — нужно было переписать шаблоны. На GEMA уже кое–что было написано, упирающееся в ограничения GEMA, надо было разобраться в Icon и переписать на него. Долго мучился, пока не начал думать «в две стороны». В Icon каждое выражение — это генератор, и функции — это тоже генератор, и особенно важно научиться писать функции, которые не обычные функции, как в императивном языке программирования, а пробуют распознать текст по шаблону и переписать в другой текст, и сами при этом такие же, как они, преобразователи для своей работы используют. Чтобы их писать, надо думать в две стороны: что случится, если выполнение идёт вперёд, и что случится, если начнётся откат.

Переписал. И пошёл дальше этим путём, насколько смог. Времена у меня были не из лёгких, 2005-2010 года самые паршивые в жизни получились, да и сейчас до сих пор не сахар. Довёл до такого состояния:

bitbucket.org
bitbucket.org

У меня на сайте написано:
Хочу как вот этот парень (Л. Поттеринг), и есть идеи, чем бы я мог заняться, а получается так, что мой поезд жизни едет и едет по своим рельсам, а мне только и остаётся, что жадно смотреть в окно.
Это как раз тот случай. «Посмотрел в окно» — и дальше по своим рельсам. Специальность у меня приборостроитель, диплом придётся на левую тему делать, совместить образование с учёбой в очередной раз не получается. Сейчас бы я, впрочем, за кое–что другое взялся.

Когда я пишу про то, чтобы взять Cocoa и GNUStep и сделать мост в SOM, а потом, может быть, и сам GNUStep переделать, это для меня выглядит вполне посильно. Есть BridgeSupport XML, есть опыт преобразования текст=>текст (в том числе #1435793). Самые разые способы достигать этих целей.

@kamenev:
kamenev

openiconlibrary.sourceforge.net

@OCTAGRAM:
OCTAGRAM

Либо PascalScript очень медленный, либо то, как я его использую, очень неэффективно. Конфиг размером 300Кбайт парсится за минуту примерно, но ведь тот же самый конфиг генерится секунды за три утилиткой на Icon, которая, создавая вытяжку только самого нужного, прочёсывает гораздо большие объёмы текста, причём, в разных форматах. FlyLink-DC.hss, многочисленные Favorites.xml, IPTrust.ini. В XML нужно снять экранирование и поменять кодировку. Причём, Icon — язык неимперативный, с интерпретатором байткода. В языке есть откаты (back-tracing), за которые он мне и нравится, и обычно используются они активно, значит, интерпретатор должен все эти откаты ещё и успевать воспроизводить. Успевает.

PascalScript же получает текст, над которыми основные операции — это нативные Pos() и Copy() сразу в нужной кодировке, и даже это занимает так долго.

К этой минуте теперь добавляется построение индекса в памяти (не замерял, но явно быстрее). В крайнем случае буду делать для скрипта константную базу данных с готовыми индексами (в InnoSetup есть TFileStream)

@a-real-rebel:
a-real-rebel

Где?

@faith-healer:
faith-healer

поставив Opera 11.50 Swordfish alpha — дефолтный скин поменялся (скорее как доработка старого + лого поменялос цвет), иконка поменялась (стала белой), по скорости — стала шустрее (но есть чуть больше памяти)
ах да, к чему я это.... новый (хотя и понимаю что все это временно) цвет лого и дефолтный скин нравятся :)

@HobbitMage:
HobbitMage

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

@griffin:
griffin

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

@glfire:
glfire

files.myopera.com 48x48 files.myopera.com 24x24 — давно валяются у меня на компе

@pc:
pc

Disable tray icon in UltraVNC

[HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3]
"DisableTrayIcon"=dword:00000001

@OCTAGRAM:
OCTAGRAM

Когда в твоих руках Icon, решение любой задачи похоже на перебор

@glfire:
glfire

Рисую скин.пнг для bombus upwap.ru за сегодня что успел, оцените.