| Comments: |
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 25th, 2008 - 02:52 pm |
|---|
| | | (Link) |
|
Я за деньги на Яваскрипте помогал кому-то писать что-то, анализирующее синтаксис (типа калькулятора?), а также графику какую-то рисующее. Это не требовало знания вообще ничего. (Это было репетиторство.) Я ещё на Яве пару раз того же человека репетировал, но это было менее результативно и более порнографично. Никакой документации ни по Яве, ни по Яваскрипту я при этом не читал. По Яваскрипту впервые читал вчера, да и то не по самому языку, а по пользовательским сценариям для Оперы. Честно говоря, такой фрустрации, как с твоим сценарием, у меня в описанных ситуациях не было (я всё ещё не посмотрел, что кроме перекодировки сделал ketmar, чтобы твой сценарий работал в Опере).
я очень извиняюсь - почему-то моя радость от удачной пробы пера обернулась почему-то твоей фрустрацией, гм.
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 27th, 2008 - 03:46 pm |
|---|
| | | (Link) |
|
Так фрустрация вызвана-то не самим языком, а сложностями с его приложением к Опере: сначала в UTF-8 перекодируй, потом с регистрами воюй.
С самим языком пока фрустрации не было.
Ладно, сегодня, если успею (ну, или на неделе), попробую сделать кнопку для возвращения выделенному фрагменту или всему комментарию Каледина его албанско-молдавского (он иногда пишет на английском). Если опять выйдет фрустрация вместо результата, то ты прав: это не для меня.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 27th, 2008 - 04:31 pm |
|---|
| | | (Link) |
|
>попробую сделать кнопку для возвращения выделенному фрагменту или всему >комментарию Каледина его албанско-молдавского кстати. невозбранно спёр идею. щас себе приделаю. %-)
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 27th, 2008 - 10:04 pm |
|---|
| | | (Link) |
|
Узнал много нового. for-in не даются. У меня так:
function TranslitToRus (s) {
if (s == 'Date:') return '\u0414\u0430\u0442\u0430:'; // return s; is worse, because even kaledins may write " Date: "
var res = "", len = s.length;
for (var f = 0; f < len; f++) {
var n = s.charAt(f);
var rus = trTable[n], dif = trTableDif[n];
if (dif) {
var n1 = s.charAt(f+1);
rus1 = dif[n1];
if (rus1) { rus = rus1; f++; }
}
res += rus?rus:n;
}
return res;
}
function DeKaledin(evt)
{
evt.preventDefault();
if (loadingPages) return false;
var ec = evt.currentTarget; // comment or text ?br?
var i = ec.childNodes[0]; //
var t = ec.childNodes[1]; // comment or text
var w = ec.childNodes[2]; // if exists
var v = doc.createElement("img");
v.setAttribute("width","22");
v.setAttribute("height","20"); // if pictures are not loaded
var u,v;
if (t.nodeName == "#comment")
{
v.setAttribute("src","http://lj.rossia.org/img/btn_prev.gif");
u = doc.createTextNode(t.nodeValue);
}
else // #text
{
v.setAttribute("src","http://lj.rossia.org/img/btn_next.gif");
u = doc.createComment(t.nodeValue);
}
ec.appendChild(v);
ec.appendChild(u);
if (w)
{
ec.removeChild(w);
}
else
{
w = doc.createElement("br");
ec.appendChild(w);
}
ec.removeChild(t);
ec.removeChild(i);
return false;
}
function UntranslitNode (node) {
if (!node) return;
if (node.nodeName == "#text")
{
var s = node.nodeValue;
node.nodeValue = TranslitToRus(s);
var pn = node.parentNode;
var t;
t = doc.createElement("img");
t.setAttribute("src","http://lj.rossia.org/img/btn_next.gif");
t.setAttribute("width","22");
t.setAttribute("height","20"); // if pictures are not loaded
var original_kal = doc.createComment(s);
var dl = document.createElement("a");
dl.href = "#";
dl.appendChild(t);
dl.appendChild(original_kal);
dl.addEventListener("click", DeKaledin, false);
pn.insertBefore(dl,node);
}
else
{
if (node.hasChildNodes)
{
var nn = Array(); // childNodes is alive
var i = node.childNodes.length;
for (var f = 0; f < i; f++) // for-in does not work as I expect
nn.push(node.childNodes[f]);
for (var f = 0; f < nn.length; f++)
UntranslitNode(nn[f]);
}
}
}
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 27th, 2008 - 10:14 pm |
|---|
| | | (Link) |
|
>for-in не даются и не надо оно там. %-)
>if (loadingPages) return false; это чего?
в createElement() тэги лучше писать капсом (похуй, но так рекомендуют).
t.setAttribute() нужны только для тупой тормозиллы, в опере можно напрямую: t.width = 20;
>var nn = Array(); можно заменить на var nn = []; более того — тут ошибка: не = Array(), а = new Array(); потому что иначе не создаётся новый объект.
>for-in does not work as I expect и не будет, ибо childNodes() не массив, а for-in только для массивов и js-объектов (которые тоже массивы). childNodes() же — native object. вообще, всё сохранение в массив здесь для того, чтобы новосгенерёные ноды не похерили цикл (ибо childNodes() отображает именно текущее состояние документа, а не снапшот).
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 27th, 2008 - 10:33 pm |
|---|
| | | (Link) |
|
>if (loadingPages) return false; это чего? Это копировать-вставить:) См. UnfoldAll()
Читал бы я ещё подробно про работу с событиями, до утра бы сидел.
вообще, всё сохранение в массив здесь для того, чтобы новосгенерёные ноды не похерили цикл Ну надо же:() Это-то понять ума большого не потребовало, а вот for-in или см. ниже я долго искал способ применить и не нашёл.
А можно ли childNodes скопировать в массив разом (с той же целью)?
Как я понимаю, редкость появления консоли в Опере вызвана try...catch, как же тогда проверять ошибки, держать исходники без отлова исключений, а потом снимать комментарии?
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 27th, 2008 - 10:44 pm |
|---|
| | | (Link) |
|
>Ну надо же:() Это-то понять ума большого не потребовало кому как. я об этом упоминаю, потому что неоднократно спотыкался. сужу по себе.
>а вот for-in или см. ниже я долго искал способ применить и не нашёл. у объектов нет метода-итератора, поэтому for-in не будет работать для native objects (в частности, любых коллекций нодов) никогда. это раз. два: надо быть очень аккуратным с for-in, потому что даже в простом массиве могут оказаться далеко не только те ключи, которые ты сам туда поместил.
>А можно ли childNodes скопировать в массив разом (с той же целью)? нет. praise the excellent API.
>Как я понимаю, редкость появления консоли в Опере вызвана try…catch нет, отсутствием ошибок. %-) а также флажком «я срал на вашу консоль, не показывайте мне эту хренотень».
>как же тогда проверять ошибки, держать исходники без отлова исключений, а >потом снимать комментарии? не делать try/catch вообще. у меня это: а) leftover'ы; б) обход дурацкого бага последних бет Оперы.
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 28th, 2008 - 12:52 pm |
|---|
| | | (Link) |
|
А почему массив-то работал без "new", раз это ошибка?
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 28th, 2008 - 02:26 pm |
|---|
| | | (Link) |
|
послабление от авторов для неаккуратных скриптописателей. встроеные типы вообще ведут себя неадекватно. рекомендую на это не полагаться, а писать new везде. пример, зачем:
function XA (z) {
this.data = z;
return this;
}
var a = XA(5);
a.data = 6;
var b = XA(4);
print(a.data);
print(b.data);запускаем в jsshell, наблюдаем две четвёрки. с new — 6 и 4, как и ожидалось.
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 27th, 2008 - 10:50 pm |
|---|
| | | (Link) |
|
>if (loadingPages) return false; это чего?
Я подумал, что это против загрузки страницы и перескока поля видимости с текущего места на, например, верх страницы.
Это не так?
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 27th, 2008 - 10:54 pm |
|---|
| | | (Link) |
|
нет. это флажок «я щаз догружаю next pages, потому что ты сам на [unfold all pages] кликнул, потому отстань, занят я».
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 28th, 2008 - 12:33 pm |
|---|
| | | (Link) |
|
Ну что ж, значит всё равно получилось правильно.
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 27th, 2008 - 10:08 pm |
|---|
| | | (Link) |
|
Если мой метод не слишком жуток, можешь его вставить (может с пробелом если только после картинки)? Если ОСОБО жуток, напиши, почему (кроме того, что исходник я читал и тоже использовал).
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 27th, 2008 - 10:15 pm |
|---|
| | | (Link) |
|
я тебе откаментил на исходник. а так — я успел приделать свой (и даже выложить) до твоего поста. %-)
кстати, «Date:» тоже заметил до и прибил. %-)
да каледин, слава яйцам, один такой пока, ну ещё вторая утошга есть, да. но давай лучше что-нибудь более полезное захуярим, и не к ЛЖР, а вообще или к часто используемым сайтам.
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 27th, 2008 - 08:11 pm |
|---|
| | | (Link) |
|
Я уже поразбирался. Фрустрации немного (вот for-in с массивами почему-то работает не так, как я ожидаю), но ещё не закончил (не слишком тривиальных ошибок не исправляю).
Обнаружил какое-то количество глюков (буква "щ", "Дате:", текст при ответе на комментарий Продвинутого Архаичного Линуксоида, например).
буква "щ", и только она, требует двух проходов (моего) унтранслиттера, кроме неё встречаются максимум 2-буквенные комбинации (ср. "сч")
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 31st, 2008 - 01:43 pm |
|---|
| | | (Link) |
|
С учётом того, что гражданин ещё и с ошибками пишет очень часто, автоматический "перевод" его на русский с распознаванием вкраплений английского, особым выделением цитат на русском и исправлением ошибок — задача на всю жизнь, на которой можно защитить несколько диссертаций (по психиатрии, психологии, филологии и математическому обеспечению ЭВМ, наверное).
да я вообще хуею с этих фашиствующих субъектов. мало того, что гражданин "уже весь сервер заебал" своим транслитом, по его же словам, а теперь вот ketmar написал о скрипте, и этот гражданин каледин говорит "а не могли бы вы долабать нам движочек? а то мы 3 года этого сделать не можем сами". немного хуею с такой наглости. вообще бы всем мотематигам запретил бы в интернет ходить, разводят разную херню фашистскую вместо того, чтоб делом заниматься.
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 28th, 2008 - 12:50 pm |
|---|
| | | (Link) |
|
Ты пробовал-то мой текст? Вряд ли, но к вопросу о славе поздних доразработчиков Фара: ты написал довольно топорный не очень нужный пользовательский Яваскрипт, заточенный под один броузер. Я написал немного другого толка ненужную хрень (по идее демонстрирующую мою способность за ограниченное время прикрутить что-то к чужому исходнику на 40 Кб и пользоваться при этом Яваскриптом и ОМД [DOM:)], включая события), но максимум, на что я могу претендовать: написать, что я не совсем лох, оправдываться за ссылку на объективные обстоятельства (про фрустрацию).
Чего в похожей ситуации можно ожидать от нынешних разработчиков Фара?
Насчёт полезного: лично я скорее займусь обдиранием пары новостных сайтов, чтобы было легче сохранять новости в личный архив без ссылок на все сегодняшние события на полях и т.п., но с иллюстрациями и ссылками по теме. В жижах кроме разворачивателя комментариев я затрудняюсь подумать об усовершенствованиях нужных (на обоих просматриваемых мной журналах усовершенствования не очень требуются).
тем не менее, я считаю, один в поле воин. т.е. один может разработать полезное ПО.
>обдиранием пары новостных сайтов
это называется "скрейпинг", и я сомневаюсь, что для этого инструментарий JS лучший - для разбора иерархий, и в т.ч. DOM-а, удобно иметь поддержку pattern matching. кроме того, вряд ли стоит это делать "из броузера" - м. б., там crazy security
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 31st, 2008 - 01:46 pm |
|---|
| | | (Link) |
|
тем не менее, я считаю, один в поле воин. т.е. один может разработать полезное ПО.
Не спорю: вот Рошаль сделал Фар. А с поддержкой, обновлениями, всё плохо: ибо некоммерческое ПО. (Линуксы с кучей народа на зарплате в корпорациях и т.п. — пример самый известный, но нетипичный. Считать его некоммерческим — бабушка надвое сказала. Как и ОпенОфис, естественно.)
это называется "скрейпинг",
кроме того, вряд ли стоит это делать "из броузера" - м. б., там crazy security
Ничего не понял. Разъясни, пожалуйста.
>А с поддержкой, обновлениями, всё плохо:все ж хотят программировать типа. а поддержка, документация это "не царское дело" как считается. и пишут по 100 раз одно и то же, не зная или не понимая аналогов. >это называется "скрейпинг", … кроме того, вряд ли стоит это делать >"из броузера" - м. б., там crazy security > >Ничего не понял. Разъясни, пожалуйста.см. Scrapingя подозреваю, чтобы не оставлять особых дыр, часть "опасных" действий должна быть запрещена, например, в Опере нельзя делать cross-site get, как пишет ketmar, а может быть, и такие простые вещи, как запись/чтение файлов нельзя делать. но библиотеки есть почти под каждый язык - скачать страницу можно при помощи пары строк, разобрать её на части - уже сложнее, я говорю, что стоит выбрать язык, поддерживающий фичу pattern matching (сопоставление с образцом). для разбора неоднородных иерархий очень удобно. pattern matching - это switch-и на стероидах, если его в языке нет, вместо него будут кучи вложенных if-ов (хотя если код достаточно легкий, можно, конечно, обойтись и без таких изысков)
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 31st, 2008 - 11:01 pm |
|---|
| | | (Link) |
|
Ну, сохранять-то я хотел бы с помощью средств броузера, а не программой. Ты немного преувеличил мои намерения, которые и так могут не реализоваться.
Я имел в виду: для начала на паре конкретных популярных сайтов обдирать мусор для удобства сохранения избранных новостей в архив.
Можешь подробнее про p m?
Вообще, если на паскале написаны компиляторы Паскаля, то вряд ли всё так плохо с Паскалем. Или с Сипипи. Вопрос, конечно, в целесообразности изобретения велосипеда, так что можно подробнее?
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | April 1st, 2008 - 04:50 pm |
|---|
| | | (Link) |
|
Что-то не проникся.
Про компиляторы, собирающие себя сами: просто так или иначе в таких языках синтаксический разбор вполне обычно возможен. Ну, вместо match используется какая-нибудь хрень. Выгоды неочевидны: какая-нибудь более объектно-ориентированная обработка выглядит вполне приемлемой для вложенных конструкций, которые в три строчки не уместишь с таким match. Может я и не понял чего-то.
да, чтобы ощутить, нужно полгодика попрограммировать в этом стиле... можешь посмотреть компиляторнемерле, если осилишь (непросто)
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | April 1st, 2008 - 06:50 pm |
|---|
| | | (Link) |
|
Скорее просто не посмотрю, если буду смотреть, то нескоро.
да ты просто ткни и 10 мин полистай, обращая внимание на кл. слово match
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | April 1st, 2008 - 08:02 pm |
|---|
| | | (Link) |
|
Читаемость иногда лучше, полагаю.
Но вообще не врубился в исключительность и удобство.
Для Lex/Yacc исходники на себе тоже маленькие, на Паскале их исходники тоже маленькие.
исходники немерле занимают 2 мб, компилятор сложнее, чем gcc (40 мб). во многом такая компрессия была достигнута благодаря матчингу.
на паскале написаны компиляторы Паскаля
так многие компиляторы написаны, это называется bootstrapping
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 27th, 2008 - 04:30 pm |
|---|
| | | (Link) |
|
>но наскучили мне си-подобные давно уж. он скорее scheme-подобный. %-)
зачем тогда с него начинать, если можно сначала изучить Схему? в ней больше поддерживается фич, и научиться гораздо большему.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 27th, 2008 - 07:23 pm |
|---|
| | | (Link) |
|
дык я так понял, что Delphi уже того… так что всё равно моск попорчен.
да не, никогда не поздно исправиться, нужно только разум оставлять открытым для новых идей (open-minded) и ещё, конечно, постоянно и непрерывно учиться | |