zmila: (bicikla neĝero)
"статычная тыпізацыя непатрэбная!", "клясы непатрэбныя!", ... "увогуле, нічога апроч існага ЖС не патрэбна!"

люблю чытаць блог Andrea Giammarchi, ён часта піша вельмі экспрэсіўна • у апошнім (ужо перад-апошнім) постынгу прайшоўся чырвоным алоўкам па новай мове TypeScript (надбудоўка над JavaScript ад Microsoft) -
... Even more funny is the usage of bool rather than boolean, so that even what you know about JS does not work anymore ... so I guess Bool would be at least available, right?
The name 'Bool' does not exist in the current scope
Exactly, Boolean is the wrapper for bool: congrats! What do you say? It was to speed up typing? ... that's why you wanted types, to write less? ... wait ... what?
zmila: (Default)
паглядзеў і амаль да канца сьледаваў відэа Jim Weirich: Adventures in Functional Programming

спачатку ён распавёў вядомыя азы пра Цюрынга і Чорча, затым паказаў, як можна ўжываць лямбды ў ЖаваШкрыпце, увёў некалькі рэфактарынгаў (tennent correspondence principle, introduce binging, rebind & inlinening) і карыстаючыся гэтым перарыфактарыў невялікі код у адпаведны, але без прысвойваньня (толькі вызавы функцый) • а потым - яшчэ больш загорнуты прыклад: вылічэньне фактарыяла (рэкурсіўны вызаў ананімнай функцыі) •

 fx = function(gen) {
    return gen(gen)
 } (
      function (gen) {
        return function(n) {
          return function (partial) {
            return function (n) {
              return n == 0 ? 1 : n * partial(n-1)
            }
          }(gen(gen))(n)
        }
      }
  )

  fx(5)
fx = function(improver) {
    return function(gen) { return gen(gen) } (
        function (gen) { return function(n) { return improver(gen(gen))(n) } }
      )
 } (
    function (partial) {
      return function (n) {
        return n == 0 ? 1 : n * partial(n-1)
      }
    }
  )

  fx(5)

нафіга? - каб паразмяць моск/мозґ і каб прадэманстраваць, што такое нерухомы пункт (fixpoint) функцыі •

дарэчы, дэталі вучэньня Чорча падчас навучэньня ў БДУ неяк прайшлі паўз мяне, таму давялося трохі пагугліць матчасьць •
а тут - опа, і ў чарговым выпуску Clojure Gazette 1.17 чытаем пра ўсё гэта (плюс: у параўнаньні з Клажурай і Ліспам) •
zmila: (Default)
рашаю 80ю задачку, спачатку хацеў сам напісаць палічбавы альгарытм вылічэньня квадратнага кораня, але потым выпадкова пабачыў у статыстыцы, што ўсіх абыходзіць нехта, хто ўжывае мову Frink (старонка аўтара, дзе ўсё пра яе) • спампаваў, запусьціў, увёў просты код для вылічэньня ўсіх каранёў ад 2 да 99, скапіяваў, а затым пры дапамозе жаваскрыпта хуценька падлічыў суму лічбаў •

з мовай Lua нагуляўся, потым пагляджу пападрабязьней, што гэта за мова-калькулятар фрынк •

а пакуль пераходжу да рашэньня судоку :)
zmila: (lunlumulo)
пытаньне (ужо выдаленае, але гугла-рыдэр усё захаваў) па жс на StackOverflow:

Why does window.alter("hello world") not work?

cytaten

Dec. 2nd, 2009 11:09 am
zmila: (Default)
is there anything a javascript coder would take for granted that works in Lua just slightly different? are there any pitfalls that may not be obvious to the experienced coder of one language trying the other one?
for example: in Lua, arrays and hashes are not separate (there are only tables) - in javascript, they are numerical Arrays and hashed Objects.
@

ржака :)

var a = []    // = new Array()
a.x = true
a[4] = a["x"]

var o = {}    // = new Object()
o.x = true
o[4] = o["x"]

console.log( a["4"], o["4"] )
// true true

розьніца толькі ў ініцыялізацыі і ў тым, што масіў мае даўжыню:
console.log( a.length, o.length )
// 5 undefined



пазнаёміўся з Scala, пачынаю пачытваць пра Lua •
zmila: (lunlumulo)
што такое правільнае рашэніе? гэта калі два ці тры дні думаеш-думаеш, робіш два ці тры варыянты альгарытма па 2-3 экраны, і кожны зь іх працуе 5-10 хвілінаў, і не дае адказу • а потым пішаш правільны альгарытм у 15 радкоў, які рашае гэтую ж задачу за 100 мс • і сцука, правільна зь першай спробы, без адладкі і тэставаньня •
 
problem76 code )
zmila: (Default)
перайшоў на другі ўзровень! рашыў 50 з 259 (на дадзены момант) задач з праекта Эўлера
Nice work, zmila, you've just advanced another level.

статыстыка )
zmila: (Default)
перайшоў на першы ўзровень! рашыў 25 з 257 (на дадзены момант) задач з праекта Эўлера
Bravo, zmila! Now that you have solved 25 problems you have achieved what 79.56% of members have failed to do and have advanced to level 1. Good luck as you continue.

статыстыка )

e-js

Jul. 13th, 2009 05:46 pm
zmila: (Default)
eĥo = { ŝanĝo: ["ĉiu", /ĵaŭde/] }

cytaten

Jun. 23rd, 2009 02:24 pm
zmila: (bicikla neĝero)
Named function expressions demystified
by Juriy "kangax" Zaytsev

Unfortunately, JScript (i.e. Internet Explorer’s ECMAScript implementation) seriously messed up named function expressions. ...
It's also quite sad that even last version of JScript - 5.8 - used in Internet Explorer 8, still exhibits every single quirk described below
для сьпецыялістых )

cytaten

Jun. 22nd, 2009 05:15 pm
zmila: (bicikla neĝero)
Unfortunately, the super innovative, secure, and efficient with advanced tab isolation and recovery browser Internet Explorer 8 crashes like a charm, so we need to rename the function into something less ambiguous for the magic JScript engine.
// NOTE: do not use with Internet Explorer
function arguments(){
    return arguments;
};

...

Sometimes I forget we have to deal with a browser which logic is to bring internally even user comments:
var f = ( /* hi scope! */ function(){ /* hi bracket! */ } );
alert(f);
// will be exactly:
// ( /* hi scope! */ function(){ /* hi bracket! */ } )
// the magic of an efficient code parser


@ JavaScript arguments Weirdness!
zmila: (bicikla neĝero)
Джон Рэзіг піша пра шчасьце, што набліжаецца на ўсіх скрыптажабна-ўэбнутых дэвелопераў: ECMAScript 5 (канчатковы чарнавік апублікаваны ў красавіку 2009, pdf 3.4MB) • назвы і нумары жабаскрыпта - гэта наогул асобная аповесьць, трэба будзе неяк сабраць усё ў адным месцы •

адна з навінаў новай версіі - strict mode (суворы рэжым) - гэта калі інтэрпрэтатар будзе лаяцца і кідацца памылкамі, калі ў кодзе нешта напісана няправільна або небясьпечна • раней усё гэта дазвалялася і браўзеры моўчкі праглыналі і хавалі, абы не засмушчаць кончанага юзэра •

пабачыў што сярод шматлікіх смачных і карысных новаўвядзеньняў ёсьць і адно ня вельмі даспадобнае: будуць забаронены доступ да arguments.callee і arguments.caller •

бяз arguments.callee для рэкурсіўнага вызава ананімнай функцыі давядзецца гэтай ананімнай функцыі ўсё такі даваць імя, а ў браўзерах ІЁ, каторыя з выхадам прывабнай 8й версіі ўсё роўна сакс адназначна, іменаваныя функцыі застаюцца ў кантэксьце:
Read more... )
а arguments.caller ужывалася некаторымі, каб генераваць стэк вызаваў - для тэставаньня-дыягназаваньня праблемаў • кажуць што для гэтага будзе асобны механізм (кшталту Error.stackTrace) •

але з прычынаў забясьпячэньня бясьпекі (не даваць тым функцыям, якія я вызываю, ніякай інфармацыі аба мне і аб тым, хто мяне вызваў, і забараніць ім зьмяняць мяне ці маіх папярэднікаў POLA, the Principle of Least Authority) гэтыя caller і callee будуць закрытыя •

Andrea Giammarchi таксама абураецца:
how critical is the gap between programming language developers and programming languages active users
і дае прыклады, як можна будзе (давядзецца) абыходзіць гэтыя забароны: рабіць па два замыканьні, то бок пісаць болей, нагрувашчваць непатрэбны і непанятны код •
zmila: (bicikla neĝero)
пачытаў у артыкуле Internet Explorer and its inefficient sort implementation, што ІЕ выконвае 17 тыш параўнаньняў, калі яму загадана адсартаваць масіў з 1000 аднолькавых элементаў •
патэсьціў розныя браўзэры:
[0, 0, ..., 0] [0, 1, ..., 999] [999, 998, ..., 0] [rnd, rnd, ..., rnd]
ff3 999 999 5681 ~9000
ie7 17583 17583 15965 ~16800
chrome2 0 ~11000 ~11000 ~11000

з хромам нешта незразумелае

код для цікаўных )

cytaten

Mar. 13th, 2009 10:33 am
zmila: (Default)
To a number of you, what you are about to read will appear to be very obvious and just the sensible thing to do.
However, looking around the web and getting code handed over to me from other developers for years has taught me that common sense is actually quite a rarity in live code on the web, and the “sensible and logical thing to do” gets pushed far down the priority list once you are in the middle of a project, and the deadline is looming.

See your code as a narrative. If you can read line by line and understand what is going on, well done. If you need to use a sketchpad to keep up with the flow of logic, then your code needs some work. Try reading Dostojewski if you want a comparison to the real world — I got lost on a page with 14 Russian names, 4 of which were pseudonyms.
@ javascript best practices
zmila: (bicikla neĝero)
How to write a robust isArray. Faced with a long-standing problem, Juriy finds the solution by reading the spec. Let this be a lesson to all of us. (@)
зэ солюшн: function isArray(o) { return Object.prototype.toString.call(o) === '[object Array]'; }
і акурат нядаўна слухаў лекцыю Douglas Crockford — "The JavaScript Programming Language" (з YUI theater) дзе Дуглас сказаў, а я потым яшчэ і праверыў у кнізе JavaScript: The Definitive Guide (5th Edition, By David Flanagan):
... objects and arrays are often treated as distinct datatypes. This is a useful and reasonable simplification; you can treat objects and arrays as separate types for most of your JavaScript programming. To fully understand the behavior of objects and arrays, however, you have to know the truth: an array is nothing more than an object with a thin layer of extra functionality.
чарговы раз пацьверджаньне (javascript is world's must misunderstood programming language) што вельмі шмат праблемаў з-за таго, што праграмеры пачынаюць пісаць на жаваскрыпце, не вывучыўшы гэтую мову (а нармальных падручнікаў ня шмат) і проста тупа пераносяць свае веды і звычкі з Java •
zmila: (bicikla neĝero)
браўзэр хром дадае новую ступень уўлякацельнасьці для ўэб-дызігнера •

код просты: дзьве <table>, калі ў правай зьмяняецца зьмест, я сынхранізую вышыні радкоў у правай:
rightTableTR.height = selCell.offsetHeight;

і левай табэлі:
leftTableTR.height = selCell.offsetHeight;

для Chrome яшчэ дадаю (інакш ён не расьцягвае радок):
leftTableTR.firstChild.height = selCell.offsetHeight;

атрымліваем: пікча )

cytaten

May. 15th, 2008 11:12 am
zmila: (lunlumulo)
Evolutionary Programming and Gradual Typing in ECMAScript 4 (pdf)
This kind of type discipline is often known as “duck typing”, on the principle that if something walks like a duck and talks like a duck, it is a duck. (This should not be confused with an older and now discredited type discipline, which says that if a woman floats like a duck then she’s a witch. ES4 has no objects that float like ducks, but it does have floats that bewitch – decimals.) The performance of duck typing is discussed later, but suffice it to say that the phrase that applies if you’re not a little careful is not “getting all your ducks in a row”, but “sitting duck”. (Author ducks.)

cytaten

Mar. 14th, 2008 04:59 pm
zmila: (Default)
прыкольная альтэрнатыва XMLHttpRequest:

Image-Cookie Call
Brent Ashley's RSLite library is an unusual alternative based on images and cookies. An image's source property is set to the service URL, which is simply a means of invoking the service. The service writes its response into one or more cookies, which will then be accessible from the JavaScript once the call has completed.
Note also that an image has three relevant event handlers (onload, onerror, onabort). The onload/onerror event handlers can, between them, represent a boolean result -- and sometimes this is adequate (for example: when all you need is confirmation that your information has been saved). While XMLHttpRequest also supports this, many alternatives (especially those which support cross-domain requests) do not. Browsers impose no domain restrictions on images.
(@ XMLHttpRequest Call # Image-Cookie Call)


файны і карысны агляд падыходаў для напісаньня javascript-праграмы,
Javascript programming patterns
The patterns I would like to mention are the following:
* The Old-School Way
* Singleton
* Module Pattern
* Revealing Module Pattern
* Custom Objects
* Lazy Function Definition

Profile

zmila: (Default)
zmi la

December 2016

S M T W T F S
    123
45678910
11121314151617
181920212223 24
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 21st, 2017 06:32 am
Powered by Dreamwidth Studios