Не верь, не бойся, не проси - [entries|archive|friends|userinfo]
phantom

[ website | My Website ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

[Mar. 24th, 2008|07:54 am]
Previous Entry Add to Memories Tell A Friend Next Entry
LinkLeave a comment

Comments:
From:[info]phantom
Date:March 25th, 2008 - 12:54 am
(Link)
я сам на яваскрипте фактически
первый раз попробовал кодить.

я уже на любом языке из си-семьи
могу с ходу писать, подсмотрев
пару примеров и заглядывая, например
на компаративные таблички для ЯПов
(http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)

но наскучили мне си-подобные давно уж.
[User Picture]
From:[info]ppkk
Date:March 25th, 2008 - 02:52 pm
(Link)
Я за деньги на Яваскрипте помогал кому-то писать что-то, анализирующее синтаксис (типа калькулятора?), а также графику какую-то рисующее. Это не требовало знания вообще ничего. (Это было репетиторство.) Я ещё на Яве пару раз того же человека репетировал, но это было менее результативно и более порнографично. Никакой документации ни по Яве, ни по Яваскрипту я при этом не читал. По Яваскрипту впервые читал вчера, да и то не по самому языку, а по пользовательским сценариям для Оперы.

Честно говоря, такой фрустрации, как с твоим сценарием, у меня в описанных ситуациях не было (я всё ещё не посмотрел, что кроме перекодировки сделал [info]ketmar, чтобы твой сценарий работал в Опере).
From:[info]phantom
Date:March 27th, 2008 - 01:50 pm
(Link)
я очень извиняюсь -
почему-то моя радость
от удачной пробы пера
обернулась почему-то
твоей фрустрацией, гм.
[User Picture]
From:[info]ppkk
Date:March 27th, 2008 - 03:46 pm
(Link)
Так фрустрация вызвана-то не самим языком, а сложностями с его приложением к Опере: сначала в UTF-8 перекодируй, потом с регистрами воюй.

С самим языком пока фрустрации не было.

Ладно, сегодня, если успею (ну, или на неделе), попробую сделать кнопку для возвращения выделенному фрагменту или всему комментарию Каледина его албанско-молдавского (он иногда пишет на английском). Если опять выйдет фрустрация вместо результата, то ты прав: это не для меня.
[User Picture]
From:[info]ketmar
Date:March 27th, 2008 - 04:31 pm
(Link)
>попробую сделать кнопку для возвращения выделенному фрагменту или всему
>комментарию Каледина его албанско-молдавского

кстати. невозбранно спёр идею. щас себе приделаю. %-)
[User Picture]
From:[info]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]
From:[info]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]
From:[info]ppkk
Date:March 27th, 2008 - 10:33 pm
(Link)
>if (loadingPages) return false;
это чего?

Это копировать-вставить:)
См. UnfoldAll()…
Читал бы я ещё подробно про работу с событиями, до утра бы сидел.

вообще, всё сохранение в массив здесь для того, чтобы новосгенерёные ноды не похерили цикл
Ну надо же:() Это-то понять ума большого не потребовало, а вот for-in или см. ниже я долго искал способ применить и не нашёл.

А можно ли childNodes скопировать в массив разом (с той же целью)?

Как я понимаю, редкость появления консоли в Опере вызвана try...catch, как же тогда проверять ошибки, держать исходники без отлова исключений, а потом снимать комментарии?
[User Picture]
From:[info]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]
From:[info]ppkk
Date:March 28th, 2008 - 12:52 pm
(Link)
А почему массив-то работал без "new", раз это ошибка?
[User Picture]
From:[info]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]
From:[info]ppkk
Date:March 27th, 2008 - 10:50 pm
(Link)
>if (loadingPages) return false;
это чего?


Я подумал, что это против загрузки страницы и перескока поля видимости с текущего места на, например, верх страницы.

Это не так?
[User Picture]
From:[info]ketmar
Date:March 27th, 2008 - 10:54 pm
(Link)
нет. это флажок «я щаз догружаю next pages, потому что ты сам на [unfold all pages] кликнул, потому отстань, занят я».
[User Picture]
From:[info]ppkk
Date:March 28th, 2008 - 12:33 pm
(Link)
Ну что ж, значит всё равно получилось правильно.
[User Picture]
From:[info]ppkk
Date:March 27th, 2008 - 10:08 pm
(Link)
Если мой метод не слишком жуток, можешь его вставить (может с пробелом если только после картинки)? Если ОСОБО жуток, напиши, почему (кроме того, что исходник я читал и тоже использовал).
[User Picture]
From:[info]ketmar
Date:March 27th, 2008 - 10:15 pm
(Link)
я тебе откаментил на исходник. а так — я успел приделать свой (и даже выложить) до твоего поста. %-)

кстати, «Date:» тоже заметил до и прибил. %-)
From:[info]phantom
Date:March 27th, 2008 - 07:23 pm
(Link)
да каледин, слава яйцам,
один такой пока, ну ещё
вторая утошга есть, да.
но давай лучше что-нибудь
более полезное захуярим,
и не к ЛЖР, а вообще или к
часто используемым сайтам.
[User Picture]
From:[info]ppkk
Date:March 27th, 2008 - 08:11 pm
(Link)
Я уже поразбирался. Фрустрации немного (вот for-in с массивами почему-то работает не так, как я ожидаю), но ещё не закончил (не слишком тривиальных ошибок не исправляю).

Обнаружил какое-то количество глюков (буква "щ", "Дате:", текст при ответе на комментарий Продвинутого Архаичного Линуксоида, например).
From:[info]phantom
Date:March 29th, 2008 - 07:18 pm
(Link)
буква "щ", и только она, требует
двух проходов (моего) унтранслиттера,
кроме неё встречаются максимум
2-буквенные комбинации (ср. "сч")
[User Picture]
From:[info]ppkk
Date:March 31st, 2008 - 01:43 pm
(Link)
С учётом того, что гражданин ещё и с ошибками пишет очень часто, автоматический "перевод" его на русский с распознаванием вкраплений английского, особым выделением цитат на русском и исправлением ошибок — задача на всю жизнь, на которой можно защитить несколько диссертаций (по психиатрии, психологии, филологии и математическому обеспечению ЭВМ, наверное).
From:[info]phantom
Date:March 31st, 2008 - 02:37 pm
(Link)
да я вообще хуею с этих
фашиствующих субъектов.

мало того, что гражданин
"уже весь сервер заебал"
своим транслитом, по его
же словам, а теперь вот
ketmar написал о скрипте,
и этот гражданин каледин
говорит "а не могли бы вы
долабать нам движочек?
а то мы 3 года этого
сделать не можем сами".

немного хуею с такой наглости.
вообще бы всем мотематигам
запретил бы в интернет ходить,
разводят разную херню фашистскую
вместо того, чтоб делом заниматься.
[User Picture]
From:[info]ppkk
Date:March 28th, 2008 - 12:50 pm
(Link)
Ты пробовал-то мой текст? Вряд ли, но к вопросу о славе поздних доразработчиков Фара: ты написал довольно топорный не очень нужный пользовательский Яваскрипт, заточенный под один броузер. Я написал немного другого толка ненужную хрень (по идее демонстрирующую мою способность за ограниченное время прикрутить что-то к чужому исходнику на 40 Кб и пользоваться при этом Яваскриптом и ОМД [DOM:)], включая события), но максимум, на что я могу претендовать: написать, что я не совсем лох, оправдываться за ссылку на объективные обстоятельства (про фрустрацию).

Чего в похожей ситуации можно ожидать от нынешних разработчиков Фара?

Насчёт полезного: лично я скорее займусь обдиранием пары новостных сайтов, чтобы было легче сохранять новости в личный архив без ссылок на все сегодняшние события на полях и т.п., но с иллюстрациями и ссылками по теме. В жижах кроме разворачивателя комментариев я затрудняюсь подумать об усовершенствованиях нужных (на обоих просматриваемых мной журналах усовершенствования не очень требуются).
From:[info]phantom
Date:March 29th, 2008 - 08:03 pm
(Link)
тем не менее, я считаю, один в поле воин.
т.е. один может разработать полезное ПО.


>обдиранием пары новостных сайтов

это называется "скрейпинг", и я сомневаюсь,
что для этого инструментарий JS лучший -
для разбора иерархий, и в т.ч. DOM-а,
удобно иметь поддержку pattern matching.
кроме того, вряд ли стоит это делать
"из броузера" - м. б., там crazy security
[User Picture]
From:[info]ppkk
Date:March 31st, 2008 - 01:46 pm
(Link)
тем не менее, я считаю, один в поле воин.
т.е. один может разработать полезное ПО.


Не спорю: вот Рошаль сделал Фар. А с поддержкой, обновлениями, всё плохо: ибо некоммерческое ПО. (Линуксы с кучей народа на зарплате в корпорациях и т.п. — пример самый известный, но нетипичный. Считать его некоммерческим — бабушка надвое сказала. Как и ОпенОфис, естественно.)

это называется "скрейпинг", … кроме того, вряд ли стоит это делать
"из броузера" - м. б., там crazy security


Ничего не понял. Разъясни, пожалуйста.
From:[info]phantom
Date:March 31st, 2008 - 05:45 pm
(Link)
>А с поддержкой, обновлениями, всё плохо:

все ж хотят программировать типа.
а поддержка, документация это
"не царское дело" как считается.
и пишут по 100 раз одно и то же,
не зная или не понимая аналогов.


>это называется "скрейпинг", … кроме того, вряд ли стоит это делать
>"из броузера" - м. б., там crazy security
>
>Ничего не понял. Разъясни, пожалуйста.


см.
Scraping

я подозреваю, чтобы не оставлять особых дыр,
часть "опасных" действий должна быть запрещена,
например, в Опере нельзя делать cross-site get,
как пишет ketmar, а может быть, и такие простые
вещи, как запись/чтение файлов нельзя делать.

но библиотеки есть почти под каждый язык -
скачать страницу можно при помощи пары строк,
разобрать её на части - уже сложнее, я говорю,
что стоит выбрать язык, поддерживающий фичу
pattern matching (сопоставление с образцом).
для разбора неоднородных иерархий очень удобно.

pattern matching - это switch-и на стероидах,
если его в языке нет, вместо него будут кучи
вложенных if-ов (хотя если код достаточно легкий,
можно, конечно, обойтись и без таких изысков)
[User Picture]
From:[info]ppkk
Date:March 31st, 2008 - 11:01 pm
(Link)
Ну, сохранять-то я хотел бы с помощью средств броузера, а не программой. Ты немного преувеличил мои намерения, которые и так могут не реализоваться.

Я имел в виду: для начала на паре конкретных популярных сайтов обдирать мусор для удобства сохранения избранных новостей в архив.

Можешь подробнее про p m?

Вообще, если на паскале написаны компиляторы Паскаля, то вряд ли всё так плохо с Паскалем. Или с Сипипи. Вопрос, конечно, в целесообразности изобретения велосипеда, так что можно подробнее?
From:[info]phantom
Date:April 1st, 2008 - 03:47 pm
(Link)
вот здесь, например.
[User Picture]
From:[info]ppkk
Date:April 1st, 2008 - 04:50 pm
(Link)
Что-то не проникся.

Про компиляторы, собирающие себя сами: просто так или иначе в таких языках синтаксический разбор вполне обычно возможен. Ну, вместо match используется какая-нибудь хрень. Выгоды неочевидны: какая-нибудь более объектно-ориентированная обработка выглядит вполне приемлемой для вложенных конструкций, которые в три строчки не уместишь с таким match. Может я и не понял чего-то.
From:[info]phantom
Date:April 1st, 2008 - 05:52 pm
(Link)
да, чтобы ощутить, нужно полгодика
попрограммировать в этом стиле...
можешь посмотреть компилятор
немерле, если осилишь (непросто)
[User Picture]
From:[info]ppkk
Date:April 1st, 2008 - 06:50 pm
(Link)
Скорее просто не посмотрю, если буду смотреть, то нескоро.
From:[info]phantom
Date:April 1st, 2008 - 07:15 pm
(Link)
да ты просто ткни и 10 мин полистай,
обращая внимание на кл. слово match
[User Picture]
From:[info]ppkk
Date:April 1st, 2008 - 08:02 pm
(Link)
Читаемость иногда лучше, полагаю.

Но вообще не врубился в исключительность и удобство.

Для Lex/Yacc исходники на себе тоже маленькие, на Паскале их исходники тоже маленькие.
From:[info]phantom
Date:April 1st, 2008 - 05:55 pm
(Link)
исходники немерле занимают 2 мб,
компилятор сложнее, чем gcc (40 мб).
во многом такая компрессия была
достигнута благодаря матчингу.
From:[info]phantom
Date:April 1st, 2008 - 03:54 pm
(Link)
на паскале написаны компиляторы Паскаля

так многие компиляторы написаны,
это называется bootstrapping
[User Picture]
From:[info]ketmar
Date:March 27th, 2008 - 04:30 pm
(Link)
>но наскучили мне си-подобные давно уж.
он скорее scheme-подобный. %-)
From:[info]phantom
Date:March 27th, 2008 - 07:16 pm
(Link)
зачем тогда с него начинать,
если можно сначала изучить Схему?
в ней больше поддерживается фич,
и научиться гораздо большему.
[User Picture]
From:[info]ketmar
Date:March 27th, 2008 - 07:23 pm
(Link)
дык я так понял, что Delphi уже того… так что всё равно моск попорчен.
From:[info]phantom
Date:March 29th, 2008 - 07:14 pm
(Link)
да не, никогда не поздно исправиться,
нужно только разум оставлять открытым
для новых идей (open-minded) и ещё,
конечно, постоянно и непрерывно учиться