<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://lj.rossia.org/bots/  --><feed version='0.3' xmlns='http://purl.org/atom/ns#'>
<title mode='escaped'>Web hate</title>
<tagline mode='escaped'>Критика web–програмування і всього з ним зв&apos;</tagline>
<link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/' />
<modified>2023-12-31T11:27:38Z</modified><link rel='service.feed' type='application/x.atom+xml' title='Web hate' href='http://lj.rossia.org/users/webhate/data/atom' />  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Вʼяла мобілізація</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:9226</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/9226.html' />
    <issued>2023-12-31T13:23:00</issued>
    <modified>2023-12-31T11:27:38Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='війна' />
    <category term='змова' />
    <content type='text/html' mode='escaped'>&lt;a href=&quot;https://postimages.org/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://i.postimg.cc/W1QWgmz6/04a-Abducted-0-03-37-917.jpg&quot; border=&quot;0&quot; alt=&quot;04a-Abducted-0-03-37-917&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Йшов по вулиці і пригадалося мені як в часи COVID-19 мусора з АКМ за плечами обмотували стрічками дитячі ігрові майданчики, майданчики з турніками і тренажерами, бесідки в парку і таке інше щоб туди, не дай боже, ніхто не зайшов. Ще пригадалося як ці самі мусора вешталися по центру міста і слідкували щоб народ сидів вдома, як посеред порожньої вулиці до мене приколупалися через відсутність маски. А ще були укольчики вакцини, коли тих хто не вколовся, опускали до безправних виродників і звільняли з роботи. Потім 24 лютого 2022 року вторглася РФ і повсюди зʼявилися блопкости часто з пʼяненькою шваллю набраною зі знайомців працівників воєнкомату і місцевих заможних торгашів. А ще були патрульні автомобілі з нахабними мусорами, пошуки диверсантів і запроданців серед тутешніх баздомних і нариків. Грудень 2023 року. Вже не перший місяць в інтернетах пишуть і говорять про нестачу солдатиків, докоряють тим хто досі не в армії, скаржаться на велику кількість ухилянтів. Але де, блять, патрульки на роздлоіжжях? Де бобіки з мусорами і торбами для майбутніх ухилянтів? Де повісточні команди на підприємствах? Де тотальний шмон? Де комендантські години з облавами для набору солдатиків? Щось тут нечисто. Треба шукати чергову змову бо під час епідемії грипу в бʼюрократів і репресивного апарату держави задору було значно більше, поліцайків на вулицях я бачив значно частіше, не вакцинованих гнобили ні за що і все проходило якось веселеші, з задором і огоньком. Ті ж працівники воєнкоматів, яких некисло так розплодилося,  живуть не в вакуумі і стопудово знають немало ухилянтів. Або поліцаї які, я впевнений, прекрасно освідомлені про купу придатних для служби громадян зі свого кутка, вулиці. Особисто я знаю 3 хануриків з повістками які вільно ходять по місту і не особливо–то ховаються, але їм все одно вдається не бути в армії бо насправді їх особливо ніхто не й шукає. Мабуть, якби подібне відбувалося б в якихось ніби–то свободолюбих США, то пересічним й пукнути не можна було без явки в воєнкомат.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/9226.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/9226&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Internet це болото для бидла</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:9089</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/9089.html' />
    <created>2023-03-15T18:16:58Z</created>
    <issued>2023-03-15T20:10:00</issued>
    <modified>2023-03-16T06:38:58Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;p&gt;Хотів написати про те що закінчилася епоха журналів і що мені не вистачає годноти в WWW, але через пару днів думки в мозку повели кудись трохи вбік. В цілому я вважаю що епоха, мабуть, справді закінчилася і достойної заміни в WWW немає. WWW орієнтований на сиюминутные інфоповоди та наповнений сміттям і бидлом під напором якого вироджується, зникає і залишається непоміченим все цікаве. Головне постійно оновлюватися і бути в струї щоб трафік не падав і щоб про тебе не забували. Також вважаю що в умовах коли все безкоштовне а споживачі не хочуть ні за що платити балом правлять рекламодавці та власники павутинних вузлів тож все те що замінило різноманітні друковані видання вимушено чи ні стелиться під них. Це проявляється як в подачі матеріалу так і в цензурі та самоцензурі. Споживачі стали лише числами і щоб мати якийсь зиск зі своєї діяльності вкрай важливо слідкувати за тим що говориш і що пишеш. Мабуть саме це одна з причин беззубості оглядів відеоігор та їхньої малочисельності. Особливо це помітно на Утупчику.  Враження таке ніби за рік виходить всього з 20 ігор (або я не те дивлюся). Я тут відкрив „ШПИЛЬ!“ а там 13 лише оглядів. А це друкований журнал який виходив раз в місяць. В тому ж „ЛКИ“ всього ще більше. Звісно якісь жрунали і газети все ще видаються як в електронному вигляді так і на папері, але в місцевому кіоску не залишилося нічого окрім кроссвордів і газеток з кулінарними рецептами. Та й грошей в мене теж немає. Ну, якщо так подумати, то павутинні вузли за якими стоїть група з 5 людей і утубери з одного довбойоба перед камерою це не видавництва з бʼюджетами, репортерами, редакторами та всим іншим. Ящо ще подумати, то в цьому середовищі де все бесплатно тупо очікувати чогось такого як, наприклад, огляд Windows Vista від Кріса Касперськи в „Хакері“ (спец. випуск № 72, 2006 рік). Всяким Касперським платити треба а це, мабуть, недоцільно і не окупляється, тож ніяких Крісів. Максимум на що варто розраховувати відкриваючи черговий павутинний вузол це бенчмарки та купа знімків екрану.&lt;/p&gt;&lt;lj-cut&gt;&lt;br /&gt;&lt;img src=&quot;https://st.violity.com/auction/big/auctions/11/28/17/1/112817103.jpg&quot; alt=&quot;Обкладинка „Интересная газета“ (для мужчин) № 6 (81)&quot; lang=&quot;ru&quot; /&gt;&lt;br /&gt;&lt;p&gt;Хочу прорідити підписки RSS, почистити закладки, припинити відвідувати деякі сайти, перестати слухати експертних експертів про війну які насправді нічого не знають а якщо щось і знають, то не кажуть а до Internet ставитися більше як до файлового сховища та довідника. Це збереже час та сили.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Нинішня ситуація коли ледь не все і не всі є в WWW а народ відвик платити за те за що раніше всі справно викладали грошики (журнали, газети, довідники, карти, пошта, програми, музика та фільми) вкрай вигідна власникам майданчиків розповсюдження інформації. Можна створити павутинний вузол, розкрутити його щоб він став достатньо відомим а решту за тебе зроблять лошки користувачі а ти будеш заробляти на рекламі. Якщо пощастить, то можна навіть здобути трішечки слави та визнання. Якість, достовірність, унікальність контенту не мають особливого значення. Головне це активність користувачів, трафік, перегляди, місце в пошуковій видачі, увага людей. Движуха зробить тебе привабливим для рекламодавців. Можливо навіть що це є той самий Web 2.0 про який я читав, але не розумів. Можливо навіть що ключова відмінність Web 2.0 від Web 1.0 полягає в оцих от Хабрахабрах, ЖЖ, YouTube, TikTok, Ebanoe.it, Ebanoe-it.ru, Coub, Pikabu, Lurkmore, Wikipedia, Medium які живуть і наповнюються за рахунок безкоштовних і безвісних юзерів Internet. Можна сказати що вони паразитують на них? Доступність і по суті відсутність вхідного барʼєру в WWW а також те що WWW є умовно безрозмірним вмістилищем даних призводить до збільшення різнородного інформаційного сміття як то новини з близько нульовим значенням або відосики на Утупчику хвилинок щонайменше так на 10 з балакучою головою яка розповідає і показує не варту уваги хуїту. Нещодавно прослухав два таких відосика від ноунейма з США. В одному він розказував що ґеймерські мишки і клавіатури відстій а в іншому те ж саме про ґеймерські крісла. В обох випадках нічого цікавого. Він не проводив ніяких досліджень, він не спеціаліст в цьому, не якийсь там лікар. Просто воно йому не подобається і його рідним теж і от він записав свою морду на фоні компʼютерних екранів і виклав це в YouTube. І це збирає перегляди. Люди коментують. І він на цьому заробляє якусь копійку. Але ж це просто пук в калюжу. Це майже те ж саме що я б послухав сусіда. Якби не Internet, то воно таке ніде б зʼявилося. Таке б не показали по телевізору і не опублікували б в журналі. Це просто інформаційни шум. І от серед такого шлаку губиться щось дійсно вартісне. Воно просто тоне.  В журналах новинам виділяли від сили 3 сторінки а нині ж враження таке що околокмплюктерні павутинні вузли на 90% складаються з новин.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Пухлощокий дрищ TheDRZJ зняв відео „ATOMIC HEART - ЭТО П..ДЕЦ“. Триває воно 28 хвилин і 12 секунд і, незважаючи на назву, п…ця там немає. Довго й нудно переповідає сюжет і розказує про малозначимі деталі дивлячись не в камеру на глядача а кудись вниз на текст який він начитує на камеру. Сам він далеко не красунчик, прекрасних форм як і прекрасного голосу не має. Немає й якоїсь цікавої подачі.  408000 переглядів, 2596 коментарів і реклама в відео. Намагюся уявити його в телевізорі і не можу. І таких от чувачків які розказують не лише про ігрульки повен Утупчик.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Васі Пупкіни з вулиці генерують так званий контент і такі ж Васі Пупкіни його споживають. Виходить що WWW наповнений охлосом життєдіяльність якого губить щось хорошне і достойне. Сумно також і те що воно так чи інакше зіпсує й телебачення, фільми та книги.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/9089.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/9089&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>.NET це рак</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:8908</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/8908.html' />
    <issued>2023-02-26T23:48:00</issued>
    <modified>2023-02-26T21:51:04Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='.net' />
    <category term='microsoft' />
    <category term='windows' />
    <content type='text/html' mode='escaped'>&lt;p&gt;.NET — хуїта. Як і програми на .NET. Кожному хто пише програми на .NET або тим паче переносить вже існуючі програми на .NET слід відривати голову. Навіть назва якась пиздавата. Що воно значить? В Linux програми на Mono хоч і тягнули за собою возик всякого, проте не відчувалося що за ними стоїть сотня – дві сотні мегабайт коду і якась там віртуальна машина. Принаймні Tasque, Gnome Do, MonoDevelop і якась там програма для взаємодії з мобільними телефончиками працювали нормально. Навіть швидко. Tomboy вже був не таким швидким а Banshee місцями підвисав. F-Spot теж був ніби нічо так. І пошуковик Beagle. Але .NET відчувається майже як йобана Java. Як йобана прожерлива Java. Навіть програми на .NET частенько являють собою недороблену кривульку. Мало того що це .NET так ще й самі по собі вони написани аби як і з купкою залежностей тому що ні в Windows forms ні в WPF немає нічого окрім стандартних компонентів а для того щоб самому написати не стандартні треба мати ICQ генія. Хто зна чому Microsoft просувають цю херню. Воно все рухається кудись не туди. Треба було розвивати Visual BASIC а не хоронити його в .NET, для GUI скопіювати GTK+ а поціновувачам скриптів впарювати ActivePython, VBScript, JScript чи будь–що інше на основі ActiveX Scripting (звісно ж з привʼязками до GUI). Ці VBScript та інші JScript інтегровані в ОС і, мабуть, для задач автоматизації і обслуговування будуть краще всяких там Python в Linux. Що ж до павутинних програмістів, то Microsoft тут, мабуть, попереду всієї планети тому що, якщо вірити Wikipedia, ще з часів Internet eplorer 5.0 є HTML Application. Уявляєте? Це, блять, програми всередині файлів HTML. В Microsoft програмували на HTML ще до Node.js. Все як люблять павутинні макаки. Кожна павутинна макака яка нічого окрім HTML і JavaScript не знає може написати програму яка не буде обмежена рамками павутинного переглядача а зможе, наприклад, форматнути системний розділ. Це майже як Electron і навіть краще ніж Electron. Щоправда не кросспалтформенно. Ґаджети на робочий стіл це теж HTML і JavaScript.&lt;/p&gt;&lt;p&gt;Windows presentation foundation теж вкрай сумнівна придумка. Сьогодні відкрив власноруч написану програму з &lt;abbr title=&quot;Windows presentation foundation&quot;&gt;WPF&lt;/abbr&gt; і там в одному файлі портянка з &lt;abbr title=&quot;Extensible Markup Language&quot;&gt;XML&lt;/abbr&gt; а в іншому класи і купа властивостей–привʼязок до портянки з &lt;abbr title=&quot;Extensible Markup Language&quot;&gt;XML&lt;/abbr&gt;. Майже як в їбанатських JavaScript framework. І воно тупить. Все що програма робить це виводить перелік посилань а збоку від переліку показує певні відомості про них і коли переміщаєшся по цьому переліку, то воно тупить. Там всередині відбувається &lt;abbr title=&quot;Model-View-ViewModel&quot;&gt;MVVM&lt;/abbr&gt; і оновлюються властивості–привʼязки. Якщо без &lt;abbr title=&quot;Model-View-ViewModel&quot;&gt;MVVM&lt;/abbr&gt; і &lt;abbr title=&quot;Windows presentation foundation&quot;&gt;WPF&lt;/abbr&gt;, то можна було б зробити цикл FOR і два масива — один з текстовими рядками а другий для структур з відомостями про ці рядки і коли б користувач переміщався по списку вібдувалося б співставлення індексів в масивах.&lt;/p&gt;&lt;p&gt;Програми на &lt;abbr title=&quot;Visual Component Library&quot;&gt;VCL&lt;/abbr&gt; кращі. Їм .NET не потрібен, працюють швидше і ресурсів потребують менше. Щоправда я розраховував на розмір програм в сотні кілобайт, але й так непогано. Смерть .NET! Хай живе &lt;abbr title=&quot;Visual Component Library&quot;&gt;VCL&lt;/abbr&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/8908.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/8908&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>For modern development Javascript indeed is a s̶h̶i̶t̶ dissapointing language</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:7879</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/7879.html' />
    <created>2022-09-02T09:38:57Z</created>
    <issued>2022-09-02T12:34:00</issued>
    <modified>2022-09-02T09:41:01Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='javascript' />
    <category term='node.js' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2022-09-2&quot; inlanguage=&quot;uk&quot; keywords=&quot;Node.js,WWW,JavaScript,programming&quot;&gt;&lt;br /&gt;&lt;p&gt;На жаль вразливі до суспільної думки люди з часом видаляють критику JavaScript та павутинного програмування. На сторінці &lt;a href=&quot;http://live.julik.nl/2013/05/javascript-is-shit&quot; hreflang=&quot;en&quot; type=&quot;text/html&quot;&gt;For modern development Javascript indeed is a s̶h̶i̶t̶ dissapointing language&lt;/a&gt; було написано що &lt;q cite=&quot;http://live.julik.nl/2013/05/javascript-is-shit&quot;&gt;JS has inherent, deep issues. They are not solvable by making a new ECMA spec.&lt;/q&gt; а тепер там лише вибачення. Відновлюю справедливість.&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite=&quot;https://web.archive.org/web/20131102132551/http://live.julik.nl/2013/05/javascript-is-shit&quot;&gt;&lt;br /&gt;&lt;p&gt;I&apos;m sorry, but the Crockford arguments do not cut it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Javascript is so bad, on so many levels - it&apos;s not even funny. This is why I am so surprised everyone jumped on the node bandwagon with such excitement - yes, Node is faster than Ruby, but it&apos;s unfathomable to me that someone in his clear mind would want to rewrite his app in Node without being 100% focused on the evented model.&lt;/p&gt;&lt;p&gt;JS has inherent, deep issues. They are not solvable by making a new ECMA spec. They are not solvable by wrapping a better syntax around it like Coffeescript does. They are not solvable by standardizing on a require implementation or by introducing classes. There is an ECMA language with classes - it&apos;s called ActionScript and it&apos;s just as shitty as JS itself. These warts just are - and as long as the masses accept it as the status quo it&apos;s going to be exactly like the PHP framework landscape to this day: everyone and their mother will be spending man-years trying to create an infrastructure of tools around a shit language that will resist those efforts every single second.&lt;/p&gt;&lt;p&gt;Let me explain why I say that JS is awful. Of course, there are nice things in it - but the problem is that their utility is disputable. Prototypal inheritance, for example, is severly limited in utility - because all it offers you are function overrides. The &quot;everything is a function&quot; approach, while also gimmicky (look ma, I can also call this!), is also not particularly useful - because a function is not an object, not a datastructure that can carry data.&lt;/p&gt;&lt;p&gt;And then the real warts begin. Let&apos;s simply enumerate:&lt;/p&gt;&lt;br /&gt;&lt;h1&gt;JS has callable attributes&lt;/h1&gt;&lt;p&gt;This is a &lt;a href=&quot;https://web.archive.org/web/20131102185121/http://live.julik.nl/2012/08/messages-versus-slots&quot; hreflang=&quot;en&quot; type=&quot;text/html&quot; title=&quot;Messages versus slots - two OOP paradigms&quot;&gt;shitty design decision&lt;/a&gt; which most of the languages have made right at the start. In retrospect, it&apos;s difficult to blame the designers because they might have had performance issues - and, to boot, if you are not used to message-passing language the whole idea of &quot;some attributes are callable and some are not&quot; seems absolutely legal.&lt;/p&gt;&lt;h1&gt;Hobjects are unusable for stable keys&lt;/h1&gt;&lt;p&gt;The mixup between objects and hashes is also a very bad idea, because it defies the premise that objects can have metadata on them - which alllow you to establish a rudimentary type system or at least any kind of introspection.&lt;/p&gt;&lt;h1&gt;Fobjects are unusable for type systems since an object does not carry any type information.&lt;/h1&gt;&lt;p&gt;This one is a biggie. Even in the Ruby world, where everything is happily quacking like a duck, we often use the Object#class to get information about an object. A fairly standard procedure of styling an HTML element to a certain model object for example:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&apos;&amp;lt;%= model.class %&amp;gt;&apos; id=&apos;&amp;lt;%= [model.class, model.id].join %&amp;gt;&apos; &amp;gt;…&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;is impossible in JS because the only types offered are &apos;Object&apos;, &apos;function&apos; and primitives. It&apos;s awful in all the ways Java is awful, and then some.&lt;/p&gt;&lt;h1&gt;Null everywhere&lt;/h1&gt;&lt;p&gt;Trying to use a constant with a wrong name by mistake?&lt;/p&gt;&lt;pre&gt;&lt;code&gt;MyApp.SYNC // should have been MyApp.SYNC_FETCH&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nothing will happen. Since ojects are hashes, and the language provides zero facilities for constants, our constant with the wrong key will be undefined, and will happily bleed into the callee. This makes stack traces huge.&lt;/p&gt;&lt;h1&gt;Callback hell&lt;/h1&gt;&lt;p&gt;JS lacks a decent facility for deferreds. It&apos;s created for evented execution, which is fundamentally not multithreaded. Your calls are interspersed with event callbacks - when your code is idling, callbacks are executed. However, JS lacks a simple facility for doing this:&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
var res = await AjaxReq.fetch(&apos;/long-request&apos;)
// because you are waiting for a result, here the runtime would
// schedule event handling, DOM redraws and whatever else it can 
// squeeze in while you await
res.name // this will be only executed once res is available
&lt;/code&gt;
&lt;/pre&gt;&lt;p&gt;Of course the JS community is doing exactly what the PHP community has been doing all along - they try to fix a bad language with even worser tooling. How? By using more callbacks and, on a good day, callback chains&lt;/p&gt;&lt;pre&gt;&amp;lt;/code&amp;gt;
when(&lt;ermagherd ridiculously=&quot;RIDICULOUSLY&quot; long=&quot;LONG&quot; callback=&quot;CALLBACK&quot;&gt;
 // 48 lines of code down
).then(&lt;holyshit when=&quot;WHEN&quot; will=&quot;WILL&quot; this=&quot;THIS&quot; be=&quot;BE&quot; over=&quot;OVER&quot;&gt;
// 23 lines down
).then(&lt;give me=&quot;ME&quot; some=&quot;SOME&quot; coffee=&quot;COFFEE&quot; already=&quot;ALREADY&quot;&gt;)
&amp;lt;/code&amp;gt;
&lt;/pre&gt;&lt;p&gt;In a normal situation this would have been fixed simply by adding a wait primitive to the language which would schedule the events when the result is still being fetched.&lt;/p&gt;&lt;p&gt;The proliferation of callbacks leads to the programming style where everything is async, but as a matter of fact 80 percent of the code you write has to be synchronuous. Simply because 80 percent of the programming is about &lt;b&gt;doing one motherfucking thing with another motherfucking thing&lt;/b&gt; and you need &lt;b&gt;both of them&lt;/b&gt; to complete the action.&lt;/p&gt;&lt;h1&gt;Terrible exception handling&lt;/h1&gt;&lt;p&gt;Exception handling in JS is terrible. It exists, but in a rudimentary form - you can see the call stack (that&apos;s going to consist of a dozen anonymous functions and one function that is named - that on a good day), and you can see an error message. Since I am not bashing on the DOM, I will only mention two most often encountered errors:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
undefined is not a function
cannot call property &apos;xyz&apos; of undefined
&lt;/code&gt;
&lt;/pre&gt;&lt;p&gt;Both of these stem from the fact that fu(ck)bjects in JS have no defined methods - they only have properties. The JS runtime will never have a way to know whether your fubject is supposed to have a method that can be called, or a property of a certain name - it will just assume it being a missing hash key. It just doesn&apos;t know any better!&lt;/p&gt;&lt;p&gt;I remember people in the Ruby community complaining about Ruby&apos;s backtraces and error messages being not good enough - and Rubinius went to address this. You know where error messages are particularly fucked up? In fucking Javascript. Because the two absolutely basic, crucial exceptions that you want to get and see every single time - NameError (when you are adressing a class-ish or constant-ish something which is not defined) and &apos;NoMethodError&apos; are simply impossible with the sloppy way the language is built.&lt;/p&gt;&lt;p&gt;And yes, functions are nice, and prototypes are nice and all that - but if you want to build a JS app having any kind of reasonable complexity, you will be bound to write code like this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
var cv = Marionette.CollectionView.extend({
	itemView: MyApp.Views.WidgetView;
});
&lt;/code&gt;
&lt;/pre&gt;&lt;p&gt;What is the error that you will get if MyApp.Views.WidgetView is not defined yet? undefined is not a function of course! Where will you get it? When the CollectionView will try to instantiate your item view. Not when you define the variable cv, no no! It will explode later, and rest assured - you will be tearing your hair out for a couple of minutes until you see where the error came from.&lt;/p&gt;&lt;p&gt;And why? Simply because everything is a hash and the language is incapable of doing any kind of introspection.&lt;/p&gt;&lt;p&gt;It absolutely perplexes me that people who have used Ruby are moving to Node and calling it a good tool. Node might be great. The language running in it is shit though, and until this gets at least marginally better I will do without Node just fine, thank you.&lt;/p&gt;&lt;p&gt;I can understand that some people wanted to escape the MRI infrastructure by going Node, because - you know - learning Japanese is hard. If you don&apos;t speak Japanese, your chances of making a noticeable improvement in MRI approach zero - you will not be treated nicely.&lt;/p&gt;&lt;p&gt;JS is shit, and if we care at least a tiny bit we should do everything in our power to either sunset it, or to move it into the &apos;assembler for the web&apos; realm where it would be a vehicle for decent languages that can actually get the job done without driving you up the wall. Being nice will not help it, and CoffeeScript is not radical enough. Support your local transpiler initiative today.&lt;/p&gt;&lt;p&gt;Update: nice to know that &lt;a href=&quot;https://web.archive.org/web/20131102132551/http://www.ramen.io/post/46936028144/we-are-switching-to-dart-why&quot; hreflang=&quot;en&quot; type=&quot;text/html&quot; title=&quot;We are Switching to Dart. Why?&quot;&gt;I am not alone in this.&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/article&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/7879.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/7879&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Да, я пишу десктопные приложения под Windows</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:7434</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/7434.html' />
    <issued>2022-08-31T15:36:00</issued>
    <modified>2022-08-31T12:37:32Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='habrahabr' />
    <category term='it' />
    <category term='programming' />
    <category term='windows' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2022-08-31&quot; inlanguage=&quot;ru&quot; keywords=&quot;Windows,Delphi,WWW,JavaScript,HTML,CSS,programming,IT&quot;&gt;&lt;br /&gt;&lt;p&gt;Знайшов цікавеньке по слову Delphi на Habrahabr. &lt;a href=&quot;https://habr.com/ru/company/infopulse/blog/269577/&quot; hreflang=&quot;ru&quot; rel=&quot;external&quot; type=&quot;text/html&quot;&gt;Да, я пишу десктопные приложения под Windows&lt;/a&gt;. Опубліковано 2015 року.&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/infopulse/blog/269577/&quot;&gt;Здравствуйте, меня зовут Владимир и я анонимный разработчик десктопных приложений под Windows. В этом месте все должны сказать «Здравствуй, Владимир!», а кто-то может быть добавит «Молодец, что осознал!». А потом все похлопают. Нет, правда, иногда от чтения Хабра у меня возникают именно такое ощущение, что нормально, нет, даже не «нормально», а допустимо и одобряемо сегодня писать только микросервисы для каких-то стартапов, которые будут по какому-то REST API отдавать данные какому-нибудь фронтенду на Ангуляре, который и будет, наконец, показывать пользователю что-то невероятно полезное, вроде таблицы с аггрегированными отзывами о стрижках пуделей с возможностью посмотреть на гуглокартах где бы в вашем городе можно было сделать именно такую стрижку вашему пуделю (несуществующему). А никаких других программ писать уже нет-нет, никак нельзя! Что за чушь?!&lt;/blockquote&gt;&lt;br /&gt;&lt;lj-cut&gt;&lt;br /&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/infopulse/blog/269577/&quot;&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;h1&gt;Десктопный софт работает без интернета&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;Работа пользователя не прервется от падения столба на датацентр Амазона или умелого тракториста в соседнем дворе. Вся мощь криворуких сисадминов провайдера, Великих Правительственных Файрволов, горе-хакеров, облачных сервисов, которые на самом деле ни разу не облачные — всё это бессильно перед ПО, которому не нужен интернет, чтобы работать. Пользователь приходит на работу, открывает свой Autocad\Maya\ПО_по_рассчёту_дырчатости_б&lt;wbr /&gt;убликов — и получаёт свой результат, который принесёт его фирме деньги. А больше ничего и не надо.&lt;/p&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;h1&gt;Лицензирование десктопного софта просто и понятно&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;Нет, бывают, конечно оригиналы, которые невероятно удачную модель лицензирования «ваша программа через год превратиться в тыкву» заменяют на ещё более удачную «ваша программа через год откатит все апдейты и превратится в семена тыквы». Но это редко. В основном вы покупаете программу, активируете лицензию — и она работает. Всё, что бы там дальше не стрельнуло в голову её авторам — уж по крайней мере эта версия у вас работать не перестанет! 100% гарантия того, что завтра вы включите компьютер и вот этот вот ярлык запустит то же самое, что работало вчера — не прекрасно ли это? Можете ли вы рассчитывать на такую же гарантию у веб-сайта? Да черта с два — вспоминаем недавнюю историю с некоторым популярным сервисом про кино. Ну так ладно кино, а если бы что-то подобное произошло с ресурсом, на который завязана ваша работа и зарплата?&lt;/p&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;h1&gt;Десктопный софт выглядит одинаково каждый день&lt;/h1&gt;&lt;p&gt;Установив некоторую версию софта, человек может научиться работать в ней быстро и эффективно. Со временем ты изучаешь быстрые клавиши, уже не ищешь ту или иную кнопку, ты знаешь что сейчас произойдёт и сколько времени это займёт. Работа становится предсказуемой. Если менеджер в фирме по установке пластиковых окон уже рассчитал в некоторой специализированной программе 100 окон, то время рассчёта 101-го окна он может вам назвать с точностью до пары секунд. И будет прав. Можем ли мы рассчитывать на что-то похожее с веб-сервисами? Ага, разогнались. Как же меня в своё время бесил Gmail, который к такой элементарной вещи как почта каждые 2 недели придумывал то фильтры, то теги, то категории, то 5 разных видов UI, то чат, то ещё какого-то черта лысого. Просто дай мне мою почту и ничего не меняй! Нет, так нельзя, надо вот сюда рюшечку и сюда иконочку. Ну и ладно, пойду-ка я в Outlook. С десктопным софтом вы сами, по крайней мере, решаете когда именно он будет обновляться и до какой версии.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;h1&gt;Десктопный софт доступен для расширения&lt;/h1&gt;&lt;p&gt;Частенько у десктопного софта есть система плагинов и есть уже готовые плагины, которые можно скачать и поставить. Ну или есть SDK и можно написать плагин самому. Или заплатить за его разработку. А даже если системы плагинов нет, то всё равно что-то да есть: есть интерфейс, который можно автоматизировать с помощью чего-то типа AutoIt, есть входные и выходные форматы данных, которые можно парсить, есть в конце-концов, бинарники, которые можно дизассамблировать и что-то подправить\понять\добавить. Нет, такое, конечно, по лицензии часто делать нельзя, но если очень надо, вот вопрос жизни и смерти человечества, то это по крайней мере физически возможно. А что с сайтом? Зачастую у нас либо нет вообще ничего, поддающегося расширению, либо есть API, который ограничен ровно настолько, чтобы ничего толком полезного с ним было сделать нельзя. Ну, спасибо большое.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;h1&gt;Десктопный софт работает&lt;/h1&gt;&lt;p&gt;В десктопной программе мне не нужно рассказывать пользователю, что у него старая версия IE или нет Flash или заблокировна Java — я просто поставлю инсталлятором всё необходимое. Мне не нужно его разрешение на геолокацию или доступ к папке с фотографиями — я пропишу его согласие на это в том лицензионном соглашении, которое все принимают не читая. У меня есть доступ к железу. У меня есть доступ к диску. Я могу написать всё, что угодно и не заниматься героическим решением задач типа «как передать данные из одной вкладки браузера в другую» или «как подписать платёж с помощью аппаратного криптоключа».&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;h1&gt;С десктопным софтом быстрее начать работать&lt;/h1&gt;&lt;p&gt;Это кажется парадоксальным — ведь устанавливаемое ПО нужно скачать и установить, а сайт можно просто открыть в браузере. Но давайте посмотрим, что будет дальше: десктопное ПО запустится по двойному клику на иконке и сразу готово к работе. В то время как сайт, скорее всего, попросит вас зарегистрироваться (нудная процедура, ещё небось и капчу разгадывать заставят), потом пришлёт вам письмо для подтверждения почты, потом попросит авторизоваться. Если мы говорим о платных сервисах, то за десктопную программу нужно заплатить 1 раз, а сайт скорее всего попросит подписаться на регулярные взносы. В итоге скачать пару мегабайт и 2 раза нажать «Next» в инсталляторе получается куда быстрее пробежки по граблям при попытке начать пользоваться модным сайтом.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;h1&gt;Десктопный софт работает быстро&lt;/h1&gt;&lt;p&gt;Да-да, я знаю что Javascript по бенчмаркам работает уже в 2 раза быстрее ассемблера. Да хоть в 10 раз бенчмарки эти ваши будут показывать — что-то не выходят пока что последние Call of Duty и GTA в браузерах. По-старинке гоняют байтики древним нативным кодом. И чего это они? Не понимают ничего, видимо.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;h1&gt;Десктопный софт можно контролировать&lt;/h1&gt;&lt;p&gt;Саму инсталяху можно проверить антивирусом. И установленную программу можно. А ещё её можно запустить от юзера с ограниченными правами. Или в виртуалке. Или ограничить файрволом. Данные из неё можно сохранить локально, а можно — на удалённый диск. Можно забекапить. Удалить можно. Что из этого всего можно сделать с веб-сайтом? Вы понятия не имеете, что он сделает с вашими данными, куда сохранит, кому продаст, когда потеряет, почему не забекапит и зачем оставит после удаления вашего аккаунта.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/7434.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/7434&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>The cult of the  amateur. How today&apos;s Internet is killing our culture</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:7332</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/7332.html' />
    <issued>2022-08-28T21:12:00</issued>
    <modified>2022-08-28T18:26:03Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='internet' />
    <category term='www' />
    <category term='книга' />
    <content type='text/html' mode='escaped'>&lt;p&gt;Our most valued cultural institutions, Keen warns — our professional newspapers, magazines, music, and  movies — are being overtaken by an avalanche of amateur, user-generated free content. Advertising revenue is being siphoned off by free classified ads on sites like Craigslist; television networks are under attack from free user-generated programming on YouTube and the like; file-sharing and digital piracy have devastated the multibillion-dollar music business and threaten to undermine our movie industry. Worse, Keen claims, our &quot;cut-and-paste&quot; online culture — in which intellectual property is freely swapped, downloaded, remashed, and aggregated — threatens over two hundred years of copyright protection and intellectual property rights, robbing artists, authors, journalists, musicians, editors, and producers of the fruits of their creative labors.&lt;/p&gt;&lt;p&gt;In today&apos;s self-broadcasting culture, where amateurism is celebrated and anyone with an opinion, however ill-informed, can publish a blog, post a video on YouTube, or change an entry on Wikipedia, the distinction between trained expert and uninformed amateur becomes dangerously blurred. When anonymous bloggers and videographers, unconstrained by professional standards or editorial filters, can alter the public debate and manipulate public opinion, truth becomes a commodity to be bought, sold, packaged, and reinvented.&lt;/p&gt;&lt;lj-cut&gt;&lt;br /&gt;&lt;p&gt;Прочитав „The cult of the  amateur. How today&apos;s Internet is killing our culture“ і перше що спало мені на думку це гроші. Вірніше не гроші а те що до такої доступності Internet люди масово купували газети, журнали, книги та (хай навіть спірачені) музику, фільми, відеоігри, програми і заходячи до когось додому чи спілкуючись з кимось було видно хто нормальний пацан а хто валянок який окрім телевізора та Вєрки Сердючки нічого не споживає. Хоча книжка не про це. Хочу також зауважити що масовий доступ до Internet так би мовити демократизував доступ до культурки, знань та віртуальних розваг зробивши їх майже безкоштовними і певною мірою знецівши тому що раніше для долучення до всього цього потрібно було бути в темі, мати сякі–такі гроші і бажання витратити їх на саме на це. Між рядків читається що культурка повинна спускатися зверху від тих хто щось з себе представляє та пройшов певний відбір через освіту, визнання в певних колах і т.д. Можна проводити новий водорозділ між масою та певною елітою. Маса не лише споживає всякий шлак на YouTube та TikTok, але й повністю занурена в електронну віртуальність WWW та відірвана від фізичного виміру культурки та інформаційного споживання. Маса відкидає фізичний вимір цупко вчепившись в розумнофон постійно зʼєднаний з Internet тому що так зручніше, тому що це чи не найкращий спосіб споживання дегенаритвного розважально–інформаційного продукту і тому що це просто дешевше.  Домашні бібліотеки, колекції музики і фільмів, музичні центри, відеоплеєри і т.п. речі перетворилися в певному смислі на статусні явища для окремих поціновувачів і чим далі тим елітнішими ставатимуть книжки на полицях а відсутність сотового буде розцінуватися як бунтарство.&lt;/p&gt;&lt;p&gt;На думку автора загальнодоступний Internet завдав нищівного удару по індустрії книговидання, виробництва музики та фільмів; журналістиці та культурі в цілому. Автор стверджує що катастрофічно зменшилися продажі і прибутки а значне число людей втратило роботу бо все що може бути переведено в електронний вигляд є безкоштовно в Internet або продається там же за смішні гроші. Розпалися профільні тусовки і звʼязок поколінь перервався бо більше не потрібно кудись ходити і спілкуватися з живими людьми — все є в Internet. Експертна думка та щось вартісне знецінилися як в прямому так і в переносному смислі і губиться в океані  інформаційного шуму і посередності що продукується масою яка нарешті отримала майданчик для самовираження.&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite=&quot;The cult of the  amateur. How today&amp;#39;s Internet is killing our culture&quot;&gt;&lt;br /&gt;Wikipedia has no reporters, no editorial staff, &amp; no experience in newsgathering. It&apos;s the blind leading the blind — infinite monkeys providing infinite information for infinite readers…&lt;br /&gt;&lt;center&gt;&lt;p&gt;***&lt;/p&gt;&lt;/center&gt;&lt;br /&gt;What&apos;s more disturbing than the fact that millions of us willingly tune in to such nonsense each day is that some Web sites are making monkeys out of us without our even knowing it. By entering words into Google&apos;s search engine, we are actually creating something called &quot;collective intelligence,&quot; the sum wisdom of all Google users. The logic of Google&apos;s search engine, what technologists call its algorithm, reflects the &quot;wisdom&quot; of the crowd. In other words, the more people click on a link that results from a search, the more likely that link will come up in subsequent searches. The search engine is an aggregation of the ninety million questions we collectively ask Google each day; in other words, it just tells us what we already know. &lt;br /&gt;As traditional mainstream media is replaced by a personalized one, the Internet has become a mirror to ourselves. Rather than using it to seek news, information, or culture, we use it to actually BE the news, the information, the culture.&lt;br /&gt;&lt;center&gt;&lt;p&gt;***&lt;/p&gt;&lt;/center&gt;&lt;br /&gt;The claim to be all about &quot;social networking&quot; with others, but in reality they exists so that we can advertise ourselves: everything from our favorite books &amp; movies, to photos from our summer vacations, to &quot;testimonials&quot; praising our more winsome qualities or recapping our latest drunken exploits.&lt;br /&gt;&lt;br /&gt;Newspapers &amp; newsmagazines, one of the most reliable sources of information about the world we live in, are flailing, thanks to the proliferation of free blogs &amp; sites like Craigslist that offer free classifieds, undermining paid ad placements.&lt;br /&gt;Those of us who still read the newspaper &amp; magazines know that people are buying less music, too. Thanks to the rampant digital piracy spawned by file-sharing technology, sales of recorded music dropped over 20 percent between 2000 &amp; 2006.&lt;br /&gt;&lt;br /&gt;In parallel with the rise of YouTube, Hollywood is experiencing its own financial troubles. Domestic box office sales now represent less than 20 percent of Hollywood&apos;s revenue &amp;, with the levelling off of DVD sales &amp; the rampant global piracy, the industry is desperately searching for a new business model that will enable it to profitably distribute movies on the Internet.&lt;br /&gt;&lt;br /&gt;Old media is facing extinction. But if so, what will take its place? Apparently, it will be Silicon Valley&apos;s hot new search engines, social media sites, &amp; video portals.&lt;br /&gt;&lt;br /&gt;The monkeys take over. Say good-bye to today&apos;s experts &amp; cultural gatekeepers — our reporters, news anchors, editors, music companies, &amp; Hollywood movie studios. In today&apos;s cult of the amateur, the monkeys are running the show. With their infinite typewriters, they are authoring the future. And we may not like how it reads.&lt;br /&gt;&lt;center&gt;&lt;p&gt;***&lt;/p&gt;&lt;/center&gt;&lt;br /&gt;I call it the great seduction. The Web 2.0 revolution has peddled the promise of bringing more truth to more people—more depth of information, more global perspective, more unbiased opinion from dispassionate observers. But this is all a smokescreen. What the Web 2.0 revolution is really delivering is superficial observations of the world around us rather than deep analysis, shrill opinion rather than considered judgment.&lt;br /&gt;&lt;br /&gt;Moreover, the free, user-generated content spawned &amp; extolled by the Web 2.0 revolution is decimating the ranks of our cultural gatekeepers, as professional critics, journalists, editors, musicians, moviemakers, &amp; other purveyors of expert information are being replaced (&quot;disintermediated,&quot; to use a FOO Camp term) by amateur bloggers, hack reviewers, homespun moviemakers, &amp; attic recording artists. Meanwhile, the radically new business models based on user-generated material suck the economic value out of traditional media &amp; cultural content.&lt;br /&gt;&lt;br /&gt;For the real consequence of the Web 2.0 revolution is less culture, less reliable news, &amp; a chaos of useless information. One chilling reality in this brave new digital epoch is the blurring, obfuscation, &amp; even disappearance of truth.&lt;br /&gt;&lt;center&gt;&lt;p&gt;***&lt;/p&gt;&lt;/center&gt;&lt;br /&gt;Truth, to paraphrase Tom Friedman, is being &quot;flattened,&quot; as we create an on-demand, personalized version that reflects our own individual myopia. One person&apos;s truth becomes as &quot;true&quot; as anyone else&apos;s. Today&apos;s media is shattering the world into a billion personalized truths, each seemingly equally valid &amp; worthwhile.&lt;br /&gt;&lt;br /&gt;This undermining of truth is threatening the quality of civil public discourse, encouraging plagiarism &amp; intellectual property theft, &amp; stifling creativity. When advertising &amp; public relations are disguised as news, the line between fact &amp; fiction becomes blurred. Instead of more community, knowledge, or culture, all that Web 2.0 really delivers is more dubious content from anonymous sources, hijacking our time &amp; playing to our gullibility.&lt;br /&gt;&lt;br /&gt;This blurring of lines between the audience &amp; the author, between fact &amp; fiction, between invention &amp; reality further obscures objectivity. The cult of the amateur has made it increasingly difficult to determine the difference between reader &amp; writer, between artist &amp; spin doctor, between art &amp; advertisement, between amateur &amp; expert. The result? The decline of the quality &amp; reliability of the information we receive, thereby distorting, if not outrightly corrupting, our national civic conversation.&lt;br /&gt;&lt;center&gt;&lt;p&gt;***&lt;/p&gt;&lt;/center&gt;&lt;br /&gt;Of course, every free listing on Craigslist means one less paid listing in a local newspaper. Every visit to Wikipedia&apos;s free information hive means one less customer for a professionally researched and edited encyclopedia such as Britannica. Every free music or video upload is one less sale of a CD or DVD, meaning one less royalty for the artist who created it.&lt;br /&gt;&lt;center&gt;&lt;p&gt;***&lt;/p&gt;&lt;/center&gt;&lt;br /&gt;On today&apos;s Internet, however, amateurism, rather than expertise, is celebrated, even revered. Today, the OED and the Encyclopaedia Britannica, two trusted reference volumes upon which we have long relied for information, are being replaced by Wikipedia and other user-generated resources. The professional is being replaced by the amateur, the lexicographer by the layperson, the Harvard professor by the unschooled populace.&lt;br /&gt;&lt;center&gt;&lt;p&gt;***&lt;/p&gt;&lt;/center&gt;&lt;br /&gt;It&apos;s not exactly expert knowledge; it&apos;s common knowledge… when you go to nuclear reactor on Wikipedia you&apos;re not getting an encyclopedia entry, so much as you&apos;re getting what people who know a little about nuclear reactors know about nuclear reactors and what they think common people can understand.&lt;br /&gt;&lt;center&gt;&lt;p&gt;***&lt;/p&gt;&lt;/center&gt;&lt;br /&gt;So what do we get in exchange for free amateur content? We get, of course, what we pay for. We get what the great thinker and writer Lewis Mumford called &quot;a state of intellectual enervation and depletion hardly to be distinguished from massive ignorance.&quot; Today&apos;s editors, technicians, and cultural gatekeepers—the experts across an array of fields—are necessary to help us to sift through what&apos;s important and what&apos;s not, what is credible from what is unreliable, what is worth spending our time on as opposed to the white noise that can be safely ignored.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/7332.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/7332&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Все просрано</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:7097</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/7097.html' />
    <issued>2022-06-24T14:33:00</issued>
    <modified>2022-06-24T10:35:34Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='війна' />
    <content type='text/html' mode='escaped'>Дивно що в наш час доповненої реальності, нейромереж та 3D–друку кожен танчик і підрозділ не споряджено якоюсь автоматизованою системою ППО щоб збивати ракети і все інше. А заодно і декількома БПЛА. От в „Command &amp; Conquer: Generals“ є й лазери що збивають ракети і навіть автоматизовані БПЛА на танках. Програмістів та електроніки хоч жопой жуй проте срані пластикові квадрокоптери купуємо у Китая. Також не видно колон з безводійських (хоча б дистанційно керованих) військових автомоблів. Немає й роботів–мулів що носять за солдатами поклажу. Хто памʼятає цей відосик &lt;a href=&quot;https://www.youtube.com/watch?v=d1kMWU2te58&quot;&gt; The Most Advanced Quadruped Robot on Earth&lt;/a&gt;? Де воно все? А ще ж, я памʼятаю, у янкі був проект по якомусь солдату майбутноього в якому кожен член підрозділу обвішаний електронно–оптичними прибабхами, стріляє як в компʼютерні грі цілячись через спеціальний монокуляр і перебуває на постійному звʼязку з командуванням та з іншими членами підрозділу. Екзосклети? Немає. Космічна зброя? Немає. Біонічні протези? Супермедицина і супепрепарати? Генетично модифіковані солдати? Нанороботи? Єдиний помітний прогрес, проте й він по суті скотився в сране лайно і вже немає ніякого прогресу, відбувся в споживацькій електроніці і в масс медіа. Тепер кожен, маючи достатню кількість грошей, може обзавестися переносним телефоном з пʼятьма камерами і 100 гігабайтами памʼяті. Скрізь висять відеокамери, в „Ощадбанку“ не можна розплатитися за газ та електрику без номеру сотового, мусора дивуються відсутності „Дії“ та розумнофона. Розумнофони підглядають за своїми власниками зливаючи дані мегакорпораціям а бидло жадає електроавтомобіль від Ілона Маска. Завдяки повсюдному проникненнню Internet маніпуляція масами вийшла на абсолютно новий рівень. Солдати копають окопи лопатами і воюють зброєю і технікою придуманою ледь не сто років тому. Замість армії клонів tik–tok–армія а замість роботів–мулів лопата–розумнофон з 5 камерами і найновішою версією Android. Грроші на війну можна заробляти на рекламі транслюючи reality show. Якийсь кіберпук 2022 (по аналогії з „Cyberpunk 2077“). Сумно це все. Може дійсно настало нове Середньовіччя?&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/7097.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/7097&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Павутинні вузли і мова</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:6866</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/6866.html' />
    <issued>2022-05-18T11:02:00</issued>
    <modified>2022-05-18T04:24:26Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='http' />
    <category term='www' />
    <category term='мова' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2022-05-18&quot; inlanguage=&quot;uk&quot; keywords=&quot;WWW,Web,HTTP,мова&quot;&gt;По–перше, просто прекрасно те що в Україні українська мова займає другорядне місце, відразу після російської. Стосується це не лише ЗМІ, художньої та технічної літератури а й павутинних вузлів. По–друге, якийсь час тому з приводу цього піднялася буча і павутинні вузли почали ставати двомовними. Ще прекрасніше те що URL деяких українських павутинних вузлів в Україні набули вигляду www.site.name.ua/ua якщо користувач вибрав українську а російська так і залишилася основною (URL залишається просто www.site.name.ua). Також далеко не всі знають (або просто кладуть х…) про HTTP–заголовок Accept-Language через що в багатьох місцях доводиться тицяти в кнопку зміни мови щоб програмулька написана павутинною макакою встановила відповідний cookie. Ну і як вишенька на торті піратські копії Windows майже всі без української мови а часом навіть без можливості зміни регіону (лише Росія) що відповідним чином відображається в павутинних переглядачах. Зборочки Windows з українською важче знайти і вибору серед них менше.&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/6866.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/6866&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Web–design це не малювання</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:6505</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/6505.html' />
    <issued>2022-01-03T18:57:00</issued>
    <modified>2022-01-03T14:59:31Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='css' />
    <category term='design' />
    <category term='html' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2022-01-3&quot; inlanguage=&quot;uk&quot; keywords=&quot;WWW,Web,design,CSS,HTML&quot;&gt;&lt;br /&gt;&lt;p&gt;Не малювання а павутинне конструювання. Цікавий твір &lt;a href=&quot;http://webmascon.com/topics/imho/2a.asp&quot; hreflang=&quot;ru&quot; type=&quot;text/html&quot;&gt;Что же такое web-дизайн?&lt;/a&gt; вносить ясність вказуючи на те що design перекладається як розробка, конструювання і що &lt;q cite=&quot;http://webmascon.com/topics/imho/2a.asp&quot; lang=&quot;ru&quot;&gt;Таким образом web-дизайнер в зарубежном понимании - это не кто иной как web-разработчик - верстальщик (web-master/web-coder), специалист по информационной архитектуре (web-developer), программист (web-programmer), администратор (system administrator) в одном лице.&lt;/q&gt;. Тобто людина–оркестр. Перевіряти його твердження я звісно ж не буду і просто наведу копію тексту.&lt;/p&gt;&lt;lj-cut&gt;&lt;br /&gt;&lt;blockquote cite=&quot;http://webmascon.com/topics/imho/2a.asp&quot;&gt;&lt;br /&gt;&lt;p&gt;Поиск в интернете слова web-design (webdesign, web design) дает нам ссылки на инструкции и книги по руководствам к различным  программам. Та же картина наблюдается в разделах &quot;Web Design&quot; таких сайтов-монстров, как &lt;a href=&quot;http://www.webdeveloper.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;WebDeveloper&lt;/a&gt; и &lt;a href=&quot;http://home.cnet.com/webbuilding/0-3880.html?tag=st.cn.1.dir.3880&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;C-Net Builder.com&lt;/a&gt;. Путаница связана с тем, что в русском языке слово &quot;дизайн&quot; приобрело другой смысл, нежели оно имеет в английском. В строгом смысле слова дизайн (design) - это разработка, конструирование. Сочетание &quot;machine design&quot; - переводится как &quot;конструирование станков&quot;, а не как их эстетическое внешнее оформление. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Таким образом web-дизайнер в зарубежном понимании - это не кто иной как web-разработчик - верстальщик (web-master/web-coder), специалист по информационной архитектуре (web-developer),  программист (web-programmer), администратор (system administrator) в одном лице.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;В русском языке дизайн ближе к эстетике, изобразительному или оформительскому искусству - в таком понимании web-дизайнер это в первую очередь художник. То есть, то, что в английском языке соответствует слову web-artist, web graphical designer.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Из-за этого - люди, дающие в отечественных газетах объявления о том, что они являются веб-дизайнерами - на самом деле берут на себя непосильное обязательство web-разработчика, являясь всего лишь web-художниками (владея графическими пакетами типа Photoshop/Illustrator/3dstudio).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Из-за этого компании, дающие объявления о том, что им нужен web-дизайнер, на самом деле ищут не web-разработчика, а web-художника (как правило с художественным образованием), который знает, как сделать красиво вообще (с помощью все тех же Photoshop/Illustrator/3dstudio), но вовсе не обязан уметь это делать своими руками.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Из-за этого зарубежная книга по web-дизайну - это в большей части техническая информация о том, как верстать таблицы, как создавать навигацию, как оптимизировать изображения.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Из-за этого отечественная книга по web-дизайну (единственная на этот день - &lt;a href=&quot;http://www.ozon.ru/detail.cfm?ent=21&amp;amp;id=7999&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;книга Кирсанова&lt;/a&gt; - это книга посвященная во многом визуальному дизайну.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;(Обратите внимание на &lt;a href=&quot;http://www.ozon.ru/detail.cfm/ent=11&amp;amp;id=18670&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;рецензию к книге Кирсанова&lt;/a&gt;. Вот цитата: &lt;small&gt;&quot;&lt;i&gt;…[другие] авторы постоянно забывают (хочется надеяться, не намеренно) о том, что дизайн - будь он &quot;веб&quot;, промышленный, художественный, садовый или интерьерный - прежде всего искусство, требующее наличия способностей, художественного вкуса, а также хотя бы минимальной теоретической подготовки у того, кто гордо именует себя &quot;дизайнером&quot;&lt;/i&gt;.&lt;/small&gt; - то есть &lt;a href=&quot;http://www.ozon.ru/detail.cfm/ent=11&amp;amp;id=61351&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;рецензент&lt;/a&gt;  как и ожидалось считает, что дизайн это прежде всего - эстетика.)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Сравните содержание книг Дмитрия Кирсанова и Якоба Нильсена. Обе они называются Web-дизайн. Но каждый из авторов пишет в своих книг совершенно о разных вещах: &lt;a href=&quot;http://www.books.ru/cgi-bin/v3/book_inf_code.cgi?7107#contents&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Веб-дизайн: книга Якоба Нильсена&lt;/a&gt; и &lt;a href=&quot;http://www.books.ru/cgi-bin/v3/book_inf_code.cgi?2176#contents&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Веб-дизайн: книга Дмитрия Кирсанова&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Из-за этого в Интернет, все что же касается художественной визуальной части веб-страниц, надо искать не в разделах &lt;b&gt;web-дизайн&lt;/b&gt;, а в разделах &lt;b&gt;visual design&lt;/b&gt; - именно там вы найдете все о сочетаемости цветов, о балансе композиции, контрасте, использовании шрифтов, создании коллажей, придумывании метафор и прочее.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Поэтому, если, скажем, проводится конкурс на лучший дизайн сайта, или идет обсуждения дизайна сайта, то оцениваться должна не навороченность графики и оригинальность рюшечек и менюшек, а то, насколько дизайнеру удалось создать удобный, работающий сайт. В WWW визуальность - средство, цель - удобство и эффективность.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Забывая об этом, некоторые веб-дизайнеры на своих личных страницах воротят такие вещи - которые основаны лишь на визуальном дизайне и строго говоря к веб-дизайну они имеют мало отношения, оно и понятно - личные страницы вряд ли ставят задачу представления информации - скорее задачу эксперимента, опыта, демонстрации, выпендрёжа наконец.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Чрезвычайное увлечение только визуальным дизайном может привести к плачевным результатам - делая сайт уже не для себя, а на заказ, web-художник (называющий себя web-дизайнером) может настолько сильно увлечься эстетическими наворотами и рюшечками, что совершенно забудет о другой стороне web-дизайна - навигации, аккуратности ссылок, совместимости с разными броузерами, легкости кода и изображений, удобстве администрирования сайта и еще о сотне всяческих мелочей. См. &lt;a href=&quot;http://webmascon.com/topics/designgeneral/4a.asp&quot; title=&quot;Стиль против Дизайна&quot;&gt;статью Зельдмана об этом&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;С приходом Flash увеличился шанс появления на свет плохих сайтов. Вместо того, чтобы думать об удобстве пользователя - web-художник думает о том, чтобы такое наворотить с анимацией или со шрифтами кнопочками и чтобы все летало и свистело и приводило пользователя в состояние транса. Получится так, что с эстетической точки зрения все будет прекрасно, но с практической - с сайтом просто невозможно будет работать. См. &lt;a href=&quot;http://webmascon.com/topics/designdetails/14a.asp&quot; title=&quot;Flash на 99% неприемлим&quot;&gt;статью Нильсена об этом&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Эта грань - между красивостью и удобством - очень тонка. Это давний спор между эстетами и прагматиками (см. &lt;a href=&quot;http://webmascon.com/topics/designdetails/2a.asp&quot; title=&quot;Марсиане и Венерианцы&quot;&gt;статью с A List Apart&lt;/a&gt; на эту тему). &lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/6505.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/6505&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Web-приложения - поступь будущего</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:6335</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/6335.html' />
    <created>2021-12-23T13:05:07Z</created>
    <issued>2021-12-23T18:10:00</issued>
    <modified>2021-12-23T13:05:57Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='web' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2021-12-23&quot; inlanguage=&quot;ru&quot; keywords=&quot;WWW,Web,Internet,programming&quot;&gt;&lt;br /&gt;&lt;p&gt;Пророрікування з 2005 року про те що павутинні програмульки зʼїдають нормальні програми. Переклад з англійської публікації &lt;a href=&quot;http://blog.rakeshpai.me/2005/01/web-applications-wave-of-future.html&quot;&gt;Web Applications - The Wave Of The Future&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;lj-cut&gt;&lt;br /&gt;&lt;blockquote cite=&quot;http://www.webmascon.com/topics/technologies/12a.asp&quot;&gt;&lt;br /&gt;&lt;p&gt;Веб-приложения наконец-то начинают пробиваться к свету. Я ставлю все свое состояние на это. Я уверен, что веб-приложения - это будущее Веба, программных приложений, сетевых архитектур и даже компьютеров и операционных систем.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Приложения основанные на Вебе проникнут (почти) во все виды программ, которыми мы пользуемся сегодня. В данной статье я попытаюсь привести некоторые преимущества использования веб-приложений.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Чтобы вы лучше поняли, о чем я веду речь, я приведу несколько примеров: GMail, Bloglines, и OddPost. Gmail является полноценным почтовым клиентом, который делает все, что делает любой другой почтовый клиент, запускаемый на вашем компьютере, и даже немного больше. То же самое можно сказать об OddPost. Bloglines - веб-приложение для чтения новостей, которое напрямую конкурирует с обычными аналогичными приложениями, конкурирует и выигрывает. Эти веб-приложения работают на сервере, а их пользовательский интерфейс (UI) отображается в виде веб-страниц. По самой структуре приложения, вся программная логика сконцентрирована в одном центральном месте (на сервере), а пользовательский интерфейс доступен любому человеку в виде небольшой программы, которая существует с самого момента зарождения HTTP-сети (речь идет о браузере). Для появления веб-приложений не хватало только таких важных технологий, как JavaScript и DOM.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Использование JavaScript в веб-приложениях очень сильно отличается от того, как он использовался в 1999 году. Тогда технология JavaScript была только классным способом заставить элементы страницы реагировать на движение мыши (что сейчас всех раздражает), создавать следы курсора на экране, мигать текстом, менять цвета. JavaScript-ом пользовались просто потому, что он был, а не потому, что он был необходим. На какой-то момент я посчитал, что дни JavaScript-а сочтены, так должно быть думали и многие другие веб-разработчики. Использование JavaScript-а на страницах стало дурным тоном в веб-дизайне, после чего язык уже все готовы были списать со счетов.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Сегодня же JavaScript - это зрелый полноценный язык. Сейчас он используется именно для того, для чего он и задумывался, для выполнения действий на стороне клиента без лишнего обращения к удаленному серверу. Динамическая составляющая веб-страниц всегда была больной точкой при создании веб-приложений, и видимо это единственная причина, почему веб-приложения только сегодня стали пробиваться к свету. Сегодняшний JavaScript полностью снимает эту проблему.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Теперь, когда мы знаем, что мы можем делать веб-приложения, давайте поговорим о том, зачем нам их делать.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Приложение находится в одном месте&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Вся программная логика приложения находится на сервере, в отличие от обычного ПО, где логика приложения располагается на компьютере каждого пользователя. Так как имеется только одна рабочая копия приложения, его намного проще распространять среди пользователей. По сути о старом способе распространения приложения вообще можно забыть, так как пользователь в реальности не получает копии приложения, как раньше. Все, что получает пользователь, это интерфейс программы (UI), т.е. только то, что ему необходимо для работы. По сути проблемы распространения веб-приложения не существует в том смысле, что получить вы его можете в любой момент в любом месте.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Пользователю не нужна никакая программа&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Все, что ему нужно, это запустить браузер и набрать URL. В наши дни браузер является стандартной программой, которую пользователь получает при установке операционной системы. Так что искать браузер ему не надо, он уже на его машине, и по сути это все, что ему нужно для работы.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Пользователь не является администратором&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Как правило, если пользователь устанавливает на своей машине приложение, ему приходится брать на себя роль администратора этого приложения. Ему надо устанавливать его, запускать, настраивать, чинить, решать возникающие проблемы. В случае же с веб-приложением, так как оно располагается на сервере, пользователю нет необходимости беспокоиться об этом. Ему и не следует об этом беспокоиться. Пользователь от этого будет только счастлив. А это в свою очередь - признак хорошего приложения. В случае же с обычным приложением о таком счастье и мечтать не приходится.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;В роли администратора выступает разработчик приложения&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Да, еще один груз на плечи программиста. Но если сравнить стоимость создания веб-приложения со стоимостью содержания команды специалистов, которые занимаются установкой, поддержкой и починкой обычных приложений на машинах пользователей, вы сразу же увидите, что будет дешевле, не говоря у же об эффективности. С точки зрения бизнеса намного выгоднее содержать небольшую команду программистов, работающую в одном месте над одним приложением.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Приложение не требует ничего от пользователя&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Ладно, здесь мы немножко слукавили. В действительности предполагается, что у пользователя есть браузер, который сможет работать с приложением. Но в реальности, это же мелочь? По самой сути Веба, веб-приложение не предъявляет никаких требований к аппаратной платформе. Это значит, что пользователь сможет работать с приложением на любой операционной системе и не заметит никакой разницы. Это огромный шаг от эры логотипов &quot;Разработано для &amp;lt;название ОС&amp;gt;&quot;. У пользователя нет 512Мб оперативки? Нет проблем. Недостаточно мощный процессор? Не проблема. Устаревшая материнская плата? Никаких проблем.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Проблема поддержки разных версий в прошлом&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Как только выходит новая версия веб-приложения, все без исключения пользователи ее получают буквально немедленно. Это же круто! Опять же, так как приложение находится на сервере, существует только одна его копия на всем белом свете. Все старые версии мгновенно исчезают, а пользователь даже не замечает, что у него новая версия программы. Это также значит, что разработчикам не надо заботиться о поддержке старых версий программ и волноваться по поводу обратной совместимости.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Малый вес&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Пользователю незачем загружать на свой компьютер все приложение целиком, чтобы начать с ним работать (фанаты Java-апплетов кусают локти!). Даже весь интерфейс не обязательно загружать. Достаточно загрузить только ту его часть, которая требуется для выполнения конкретной текущей задачи. Благодаря этому веб-приложения невелики по объему, быстро загружаются и быстро отвечают на действия пользователей. Даже самое сложное приложение загружается всего за несколько секунд, и даже меньше, и то только, если канал слишком узкий.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Переносимость&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Так как на компьютере пользователя ничего не устанавливается, пользователь может работать с приложением из любого места. &quot;Любое место&quot; буквально означает любое место на Земле. Вы можете загрузить веб-приложение, сидя в офисе, валяясь на диване дома, загорая на Гавайях, и во всех случаях оно будет работать без сучка и задоринки.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Простота и надежность&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Никаких проблем с закрытыми протоколами и номерами портов. Если ваш файрвол пропускает обычные веб-страницы (а какой не пропускает?), вы загрузите любое веб-приложение. Так что пользователю не приходится забивать себе голову различными ненужными вещами или вообще беспокоиться о них. Он просто запускает браузер и набирает URL. Все просто. И даже больше, так как приложение работает в защищенной среде браузера, оно не сможет никак навредить компьютеру пользователя (упс). Никаких тебе &quot;это приложение замедляет работу системы&quot; или &quot;приложение совершило недопустимую операцию&quot;. Все это в прошлом.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Архитектура приложения невидима для пользователя&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Программисты посчитали что для хранения данных требуется отдельный сервер под базу данных? Решили поменять компьютеры на более мощные? Решили усилить компьютеры, добавив еще пару сотен тысяч? В мире веб-приложений это вполне возможно. Чего не скажешь о мире настольных программ. в мире веб-приложений несложно строить и поддерживать подобного рода многокомпьютерные системы. В любом случае пользователь даже не подозревает о том, как устроено все хозяйство на стороне сервера.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Разумеется веб-приложения никогда не смогут делать некоторые вещи, которые доступны настольным приложениям - я об этом речь и не веду. Вы никогда не сможете из браузера создавать сложные трехмерные модели. Веб-приложения не могут никак заменить системные программы. Не смогут по крайней мере в ближайшем будущем. Однако, что касается прикладных программ, дни настольного ПО сочтены.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Добро пожаловать на шоу. Сегодня в нашей программе: начало конца настольного ПО.&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Оригінал — &lt;a href=&quot;http://blog.rakeshpai.me/2005/01/web-applications-wave-of-future.html&quot;&gt;Web Applications - The Wave Of The Future&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Скопійовано з &lt;a href=&quot;http://www.webmascon.com/topics/technologies/12a.asp&quot;&gt;Web-приложения - поступь будущего&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/6335.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/6335&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Metastream</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:5904</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/5904.html' />
    <created>2021-12-23T12:14:43Z</created>
    <issued>2021-12-23T17:16:00</issued>
    <modified>2021-12-23T12:16:02Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='3d' />
    <category term='internet' />
    <category term='web' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2021-12-16&quot; inlanguage=&quot;ru&quot; keywords=&quot;WWW,Web,Internet,3D&quot;&gt;&lt;br /&gt;&lt;blockquote cite=&quot;https://compress.ru/article.aspx?id=9717&quot;&gt;&lt;br /&gt;&lt;p&gt;Технология трехмерной визуализации объектов MetaStream (&lt;a href=&quot;http://www.metastream.com&quot;&gt;http://www.metastream.com&lt;/a&gt;) появилась на рекламном рынке Интернета сравнительно недавно, но уже хорошо зарекомендовала себя, в первую очередь благодаря своей простоте и функциональности, в отличие от других систем, предоставляющих возможность просмотра трехмерных объектов прямо на Web-странице. Все чаще мы, загружая страницы тех или иных компаний, получаем на экране радостное сообщение о том, что вся или почти вся продукция, будь то бытовые приборы или пищевые продукты, доступна для просмотра в 3D-режиме. Если вы загружаете страницу, содержащую MetaStream-информацию, впервые, то вам предлагается получить и установить у себя на компьютере программу, которая позволит    просматривать MetaStream-объекты. Проще говоря — устанавливается plug-in-вьювер, распространяемый компанией MetaStream бесплатно, и взамен статических картинок среди текста вы получаете «живую» 3D-анимацию, причем главным преимуществом этой технологии является предоставление возможности пользователю вращать 3D-объект в любых плоскостях, увеличивать/уменьшать объект (удерживая нажатой клавишу Ctrl), а также перемещать его в пределах окна просмотра (удерживая клавишу Shift).&lt;/p&gt;&lt;br /&gt;&lt;lj-cut&gt;&lt;br /&gt;&lt;p&gt;Вторым, не менее важным преимуществом технологии MetaStream является простота разработки MetaStream-объектов. Разработчики Web-сайтов получают прекрасную возможность создавать 3D-объекты, используя стандартные средства трехмерного моделирования. Созданный вами в RayDream Studio или RayDream 3D-объект может быть с легкостью сохранен в файл с расширением MTS, который и является исходным    файлом MetaStream. Наряду с этим компания выпускает и также бесплатно распространяет «plug-in» для Kinetix 3D-studio MAX версий 2 и 2.5, который позволяет экспортировать практически любой объект, созданный с использованием этой популярной программы, в формат MTS. При этом разработчик имеет возможность указать качество текстур объекта, что напрямую влияет на конечный размер файла, а также вид освещения объекта. После того как вы создали файл MTS, содержащий 3D-объект и текстуру, вы загружаете MTS-файл на сервер и прописываете управляющий HTML-код в вашу страницу. Сам по себе код может быть изменен и является мощным средством настройки    различных параметров визуализации вашего 3D-объекта. Кроме стандартных параметров любого HTML-объекта, таких как ALIGN, BGCOLOR, BACKGROUND и т.д, вы можете регулировать многие другие дополнительные параметры, начиная с простых (таких как замена    цвета бэкграунда при наведении курсора мыши на объект) и заканчивая такими «наворотами», как регулировка скорости анимации, качество детализации объекта, настройка объектива виртуальной камеры, режима вращения, возможность указания URL, который загрузится    при клике, не говоря уже о том, что объект MetaStream имеет свой собственный  графический интерфейс. Так, когда вы ссылаетесь непосредственно на MTS-файл, он показывается в специальном графическом интерфейсе с необходимыми элементами  управления.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Хороший пример применения этой технологии вы можете увидеть на сайте www.tonus.ru, созданном дизайн-студией X-Project (www.xproject.ru). Согласитесь, приятно покрутить на экране «вкусную» трехмерную картинку продукта, который вы желаете приобрести. Использование подобной технологии на вашем сайте дает много преимуществ. Можно использовать MetaStream-активные страницы с различными целями, например, для привлечения клиентов или с целью дать покупателю визуальное представление о своем продукте, чтобы потом его было легче узнать на прилавках. В целом MetaStream — это новое слово на рынке интерактивной рекламы в Интернете.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Коротко о самой технологии:&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Технология MetaStream была разработана группой Real Time Group (RTG), подразделением    компании MetaCreations (www.metacreations.com),    совместно с Intel и лицензирована Microsoft. Особенностью и новшеством этой технологии является использование трикселов. Трикселы (trixels) чем-то напоминают    всем известные пикселы (pixels) и являются элементарной составляющей любого двухмерного цифрового изображения. Триксел характеризуется цветом RGB и тремя  координатами: X, Y, Z.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Директор отдела разработки программного обеспечения Intel Стэн Мо (Stan Mo) заявляет: «Качество изображения будет целиком зависеть от скорости вашей системы; оно достаточно высоко на Pentium II, а на будущих процессорах станет еще выше». Алгоритм Metastream устроен так, что предусматривает автоматическое упрощение объекта и текстур, таким образом, MetaStream как бы подстраивается под возможности вашего компьютера, а также под скорость вашей связи по Интернету. Итак, мы получаем вполне приемлемое изображение и скорость анимации даже на достаточно медленных процессорах с частотой 133 МГц и небольшим объемом памяти. Меньше изображение объекта — меньше трикселов, а значит, меньше поступило информации об объекте. Больше изображение — больше трикселов, машина больше «узнала» об объекте, картинка стала еще детальнее: вам видны ее мелкие части. Объект появляется не сразу, а по мере его загрузки. Все это чем-то напоминает interlaced GIF. Более того, существует возможность настройки изображения, то есть разработчик может сам настроить разрешение, выбирая между скоростью и детализацией, так, к примеру, возможно получить отображение только каркаса модели. Со стороны пользователя может быть выбран один из следующих способов визуализации объекта: OpenGL, Direct3D или MetaCreation’овский SreeD.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Таким образом, преимущества MetaStream налицо: маленький размер файла, что очень критично при использовании в Сети; появление объектов на экране по мере загрузки, что характеризует эту технологию как «потоковую» (stream), это безусловно удобно для пользователя, имеющего не настолько быструю скорость соединения. К сожалению, не так уж часто мы с вами можем видеть интерактивную трехмерную анимацию на страницах Интернета. А жаль — потому что технология MetaStream — современное, быстро развивающееся средство интерактивной рекламы в Интернете.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;КомпьютерПресс 2&apos;2000. &lt;a href=&quot;https://compress.ru/article.aspx?id=9717&quot; hreflang=&quot;ru&quot;&gt;MetaStream&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/article&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/5904.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/5904&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>The emperor’s new clothes were built with Node.js</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:5663</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/5663.html' />
    <created>2021-11-07T07:44:39Z</created>
    <issued>2021-11-07T10:42:00</issued>
    <modified>2021-11-07T16:03:22Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='javascript' />
    <category term='node.js' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2021-11-7&quot; inlanguage=&quot;uk&quot; keywords=&quot;WWW,Web,Internet,JavaScript,Node.js,concurrency&quot;&gt;&lt;p&gt;Копія видаленого тексту від Eric Jiang „The emperor’s new clothes were built with Node.js“ опублікованого в середу, 4 червня 2014 на &lt;a href=&quot;https://notes.ericjiang.com/&quot;&gt;https://notes.ericjiang.com/&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite=&quot;https://web.archive.org/web/20140606165708/http://notes.ericjiang.com/posts/751&quot;&gt;&lt;br /&gt;&lt;p&gt;There are plenty of people lambasting Node.js (see the infamous &lt;a href=&quot;https://web.archive.org/web/20140606165708/http://pages.citebite.com/b2x0j8q1megb&quot;&gt;“Node.js is cancer”&lt;/a&gt;) but proponents tend to misunderstand the message and come up with irrelevant counterpoints. It’s made worse because there are two very different classes of people that use Node.js. The first kind of people are those who need highly concurrent servers that can handle many connections at once: HTTP proxies, Websocket chat servers, etc. The second are those who are so dependent on JavaScript that they need to use JS across their browser, server, database, and laundry machine.&lt;/p&gt;&lt;lj-cut&gt;&lt;br /&gt;&lt;p&gt;I want to address one-by-one all of the strange and misguided arguments for Node.js in one place.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; what’s clothing that doesn’t use threads and doesn’t block (anything)?&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Node.js is fast!&lt;/h2&gt;&lt;p&gt;This is actually too imprecise. Let’s break it down into two separate claims:&lt;/p&gt;&lt;h3&gt;A. JavaScript running on V8 is fast!&lt;/h3&gt;&lt;p&gt;You have to give the V8 developers some kudos. V8 has done incredible things to run JavaScript code really fast. How fast? Anywhere from 1x to 5x times slower than Java, at least for the &lt;a href=&quot;https://web.archive.org/web/20140606165708/http://benchmarksgame.alioth.debian.org/&quot;&gt;Benchmarks Game&lt;/a&gt;. (Some of you may not realize that “slower” is not a typo.)&lt;/p&gt;&lt;p&gt;If you look at their benchmarks, you’ll notice that &lt;a href=&quot;https://web.archive.org/web/20140606165708/http://blog.chromium.org/2009/02/irregexp-google-chromes-new-regexp.html&quot;&gt;V8 ships a really freakin’ good regex engine&lt;/a&gt;. Conclusion? Node.js is best suited for CPU-bound regex-heavy workloads.&lt;/p&gt;&lt;p&gt;So if we take the Benchmarks Game to be gospel, then what languages/implementations are typically faster than JavaScript/V8? Oh, just some unproductive ones like Java, Go, Erlang (HiPE), Clojure, C#, F#, Haskell (GHC), OCaml, Lisp (SBCL). Nothing that you could write a web server in.&lt;/p&gt;&lt;p&gt;And it’s good that you don’t need to use multiple cores at once, since the interpreter is single-threaded. (Comments will no doubt point out that you can run multiple processes in Node.js, something that you can’t do with any other language.)&lt;/p&gt;&lt;h3&gt;B. Node.js is non-blocking! It has super concurrency! It’s evented!&lt;/h3&gt;&lt;p&gt;Sometimes I wonder whether people even understand what they’re saying.&lt;/p&gt;&lt;p&gt;Node.js is in this weird spot where you don’t get the convenience of light-weight threads but you’re manually doing all the work a light-weight threads implementation would do for you. Since JavaScript doesn’t have built-in support for any sort of sane concurrency, what grew out of it was a library of functions that use callbacks. PL folks will realize that it’s just a crappy version of &lt;a href=&quot;https://web.archive.org/web/20140606165708/http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-349.pdf&quot;&gt;continuation-passing style (Sussman and Steele 1975)&lt;/a&gt;, but instead of being used to work around recursion growing the stack, it’s used to work around a deficient language.&lt;/p&gt;&lt;p&gt;So yes, Node.js can effectively deal with many connections in a single-threaded application, but it wasn’t the first or only runtime to do so. Look at Vert.x, Erlang, Stackless Python, GHC, Go…&lt;/p&gt;&lt;p&gt;The best part is all the people jumping through hoops to create their MVP in Node.js because they think it’ll make their site faster for their swarms of future users. (Never mind that loading 500K of Backbone.js code and miscellaneous libraries is not very high performance anyways.)&lt;/p&gt;&lt;h2&gt;Node.js makes concurrency easy!&lt;/h2&gt;&lt;p&gt;JavaScript doesn’t have built-in language features for concurrency, Node.js doesn’t provide that magic, and there are no metaprogramming capabilities. You have to manage all of your continuations manually, or with the help of (lots of different) libraries that push JavaScript syntax to its absurd limits. (BTW, I find should.js both horrific and convenient.) It’s the modern-day equivalent of using GOTO because your language doesn’t have for loops.&lt;/p&gt;&lt;p&gt;Let’s compare.&lt;/p&gt;&lt;p&gt;In Node.js, you might write this function for some business task:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;function dostuff(callback) {
  task1(function(x) {
    task2(x, function(y) {
      task3(y, function(z) {
        if (z &amp;lt; 0) {
          callback(0);
        } else {
          callback(z);
        });
    });
  });
}&lt;/code&gt;
&lt;/pre&gt;&lt;p&gt;Clear as mud. Let’s use Q promises instead!&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
function dostuff() {
  return task1()
    .then(task2)
    .then(task3)
    .then(function(z) {
      if (z &amp;lt; 0) {
        return 0;
      } else {
        return z;
      });
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A lot more readable, but still dumb. One side effect is that Q eats your exceptions unless you remember to finish your chain with “.done()”, and there are plenty of other pitfalls that aren’t obvious. Of course, most libraries in Node.js don’t use Q, so you’re still stuck using callbacks anyways. What if task2 didn’t return a Q promise?&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
function dostuff() {
  return task1()
    .then(function(x) {
      var deferred = Q.defer();
      task2(x, deferred.resolve);
      return deferred;
    })
    .then(task3)
    .then(function(z) {
      if (z &amp;lt; 0) {
        return 0;
      } else {
        return z;
      }
    })
    .done();
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The code above is broken. Can you spot why? By the way, we also forgot to handle exceptions. Let’s fix these issues:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;function dostuff() {
  return task1()
    .then(function(x) {
      var deferred = Q.defer();
      task2(x, function(err, res) {
        if (err) {
          deferred.reject(err);
        } else {
          deferred.resolve(res);
        }
      });
      return deferred.promise;
    },
    function(e) {
      console.log(&quot;Task 1 failed.&quot;);
    })
    .then(task3, function(e) {
      console.log(&quot;Task 2 failed.&quot;);
    })
    .then(function(z) {
      if (z &amp;lt; 0) {
        return 0;
      } else {
        return z;
      }
    },
    function(e) {
      console.log(&quot;Task 3 failed.&quot;);
    })
    .done();
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Notice how the error handling and the tasks they correspond to are interleaved. Are we having fun yet?&lt;/p&gt;&lt;p&gt;In Go, you can write code like this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;func dostuff() int {
  z := task3(task2(task1())))
  if z &amp;lt; 0 {
    return 0
  }
  return z
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Or with error handling:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;func dostuff() int, err {
  x, err := task1();
  if err != nil {
    log.Print(&quot;Task 1 failed.&quot;)
    return 0, err
  }
  y, err := task2(x);
  if err != nil {
    log.Print(&quot;Task 2 failed.&quot;)
    return 0, err
  }
  z, err := task3(y);
  if err != nil {
    log.Print(&quot;Task 3 failed.&quot;)
    return 0, err
  }
  if z &amp;lt; 0 {
    return 0;
  }
  return z;
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Realize that both the Go and Node.js versions are basically equivalent, except Go handles the concurrency and continuations for us. In Node.js, we have to manage our continuations manually because we have to work against the built-in control flow.&lt;/p&gt;&lt;p&gt;Oh, before you actually do any of this stuff, &lt;a href=&quot;https://web.archive.org/web/20140606165708/http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony&quot;&gt;you have to learn not to release Zalgo, possibly by using synthetic deferrals&lt;/a&gt; (say what?) so that you don’t &lt;a href=&quot;https://web.archive.org/web/20140606165708/http://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/&quot;&gt;make your API’s users unhappy&lt;/a&gt;. In the world of “lean” and MEAN MVPs, who has time to learn about leaky abstractions on top of some obtuse runtime?&lt;/p&gt;&lt;p&gt;By the way, Q is super slow (or so the Internet says). Check out this &lt;a href=&quot;https://web.archive.org/web/20140606165708/http://spion.github.io/posts/why-i-am-switching-to-promises.html&quot;&gt;handy performance guide comparing 21 different ways of handling asynchronous calls&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;No wonder people love Node.js. It gives you the same performance as lightweight threads but with the clarity and usability of x86 assembly.&lt;/p&gt;&lt;p&gt;When people point out how unpleasant it is to manually handle control flow in Node.js, the proponents say, “Use libraries to handle that, like async.js!” So you start using library functions to run a list of tasks in parallel or compose two functions, which is exactly what you’d do with any threaded language, except worse.&lt;/p&gt;&lt;h2&gt;LinkedIn went from 30 servers to 3 by switching to Node.js!&lt;/h2&gt;&lt;p&gt;Quoth Hacker News: “I switched from a dump truck to a motorbike and now I drive a lot faster!”&lt;/p&gt;&lt;p&gt;PayPal and Wal-Mart have also had high-profile switches to Node.js. Of course, they’re comparing two completely different things to make Node.js look better. In these too-good-to-be-true stories, they’re switching from a gigantic enterprisey codebase to a Node.js app written from scratch. Is there any question that it wouldn’t have been faster? They could have switched to pretty much any anything and gotten a performance gain.&lt;/p&gt;&lt;p&gt;In LinkedIn’s case, they had proxies running on Mongrel with a concurrency of 1. It’s like switching from using one finger to type on a QWERTY keyboard to using ten fingers on a Dvorak keyboard and giving all the credit to Dvorak for a better keyboard layout.&lt;/p&gt;&lt;p&gt;This is classic hype: real-world stories misunderstood and twisted to confuse the unwitting.&lt;/p&gt;&lt;h2&gt;It lets you leverage your existing JavaScript expertise!&lt;/h2&gt;&lt;p&gt;Let’s be more specific and break this down into a couple parts:&lt;/p&gt;&lt;h3&gt;a. The frontend devs can work on the backend!&lt;/h3&gt;&lt;p&gt;Where was JavaScript used previously? Primarily browser-side front-end code to animate buttons or smoosh JSON into fancy interfaces. By leveraging JavaScript on the backend, you let your ninja UI devs hack on mission-critical networking code. Since it’s JS on both ends, there’s nothing to learn! (Right?)&lt;/p&gt;&lt;p&gt;Wait until they find out that they can’t use &lt;code&gt;return&lt;/code&gt; normally (because concurrency!), they can’t use &lt;code&gt;throw/catch&lt;/code&gt; normally (because concurrency!), and everything they call is callback based, returns a Q promise, returns a native promise, is a generator, is a pipe, or some other weird thing because it’s Node.js. (Just tell them to check the type signatures.)&lt;/p&gt;&lt;p&gt;If they couldn’t learn a new language for the backend, then they’ll have trouble figuring out how to mix and match all the different callbacks/promises/generators into code that doesn’t collapse every time a change is made.&lt;/p&gt;&lt;h3&gt;b. We can share code between the backend and frontend!&lt;/h3&gt;&lt;p&gt;You’re then limiting your server-side code to use only language features that browsers support. For example, your shared code can’t use JS 1.7 generators until the browsers support it too and we have enough experience to know that adoption could take years.&lt;/p&gt;&lt;p&gt;Effectively, we can’t improve the server language in Node in substantial ways without drifting away from the browser language. Node.js has so many gaping holes that are up to the libraries to fix, but since it’s chained to the language we call JavaScript, it’s can’t strike out on its own to address these things at the language level.&lt;br&gt;It’s an awkward situation where the language doesn’t give you much, but you can’t change the language so you keep doing &lt;code&gt;npm install band-aid&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;This can be fixed by running some sort of compilation step to transform new language features into older features so you can write for the server and still run on regular JavaScript. Your choices are either something that’s 95% JavaScript (TypeScript, CoffeeScript) or not JavaScript at all (ClojureScript, perhaps).&lt;/p&gt;&lt;p&gt;More worrying is that this argument implies that you actually muddle the concerns of your server and frontend. In the real world, you’ll find that your backend turns into a JSON API that handles all of the validation, processing, etc., and you have multiple (sometimes third-party) consumers of that API. For example, when you decide to build iPhone and Android apps, you’ll have to decide between a native app in Java, Obj-C, or C#, or packing your one-page Backbone.js/Angular.js app using Phonegap/Cordova. The code you share between the server and client may end up being a liability, depending on what platform you go with.&lt;/p&gt;&lt;h2&gt;NPM is so great!&lt;/h2&gt;&lt;p&gt;I think NPM has attained a status of “not awful”, which puts it ahead of many other package managers. Like most ecosystems, NPM is pretty cluttered with multiple redundant implementations of the same thing. Say you need a library for sending Android push notifications. On NPM, you’ll find: gcm, node-gcm, node-gcm-service, dpush, gcm4node, libgcm, and ngcm, not to mention all the libraries that support multiple notification services. Which are reliable? Which are abandoned? In the end, you just pick the one that has the most downloads (but why can’t we sort results by popularity?).&lt;/p&gt;&lt;p&gt;NPM also has a less-than-stellar operations track record. It used to go down quite often and it was hilarious seeing all the companies that suddenly couldn’t &lt;em&gt;deploy code&lt;/em&gt; because NPM was having troubles again. Its up-time is quite a bit better now, but who knows if they will suddenly &lt;a href=&quot;https://web.archive.org/web/20140606165708/http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more&quot;&gt;break your deployment process because they can&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;We somehow managed to deploy code in the past without introducing a deploy-time dependency on a young, volunteer-run, created-from-scratch package repository. We even did such blasphemous things as including a copy of the library source locally!&lt;/p&gt;&lt;h2&gt;I’m so productive with Node.js! Agile! Fast! MVP!&lt;/h2&gt;&lt;p&gt;There seems to be a weird dichotomy in the minds of Node.js programmers: either you’re running mod_php or some Java EE monstrosity and therefore a dinosaur, or you’re on Node.js and super lean and fast. This might explain why you don’t see as many people bragging about how they went from Python to Node.js.* Certainly, if you come from an over-engineered system where doing anything requires an AbstractFactoryFactorySingletonBean, the lack of structure in Node.js is refreshing. But to say that this makes Node.js more productive is an error of omission—namely, they leave out all the things that suck.&lt;/p&gt;&lt;p&gt;Here’s what a newcomer to Node.js might do:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;This function might fail and I need to throw an exception, so I’ll write &lt;code&gt;throw new Error(&quot;it broke&quot;);&lt;/code&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The exception isn’t caught by my try-catch!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Using &lt;code&gt;process.on(&quot;uncaughtException&quot;)&lt;/code&gt; seemed to do it.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I’m not getting the stacktrace I expected, and StackOverflow says that this way violates best practices anyways.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Maybe if I try using domains?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Oh, callbacks typically take the error as the first parameter. I should go back and change my function calls.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Someone else told me to use promises instead.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;After reading the examples ten or twelve times, I think I have it working.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Except that it ate my exceptions. Wait, I needed to put &lt;code&gt;.done()&lt;/code&gt; at the end of the chain.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Here’s a Python programmer:&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;code&gt;raise Exception(&quot;it broke&quot;);&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Here’s a Go programmer:&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I’ll add &lt;code&gt;err&lt;/code&gt; to my return signature and change my &lt;code&gt;return&lt;/code&gt; statements to add a second return value.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;There is &lt;em&gt;a lot&lt;/em&gt; of stuff in Node.js that actually gets in the way of producing an MVP. The MVP isn’t where you should be worrying about returning an HTTP response 40ms faster or how many simultaneous connections your DigitalOcean “droplet” can support. You don’t have time to become an expert on concurrency paradigms (and you’re clearly not because you wouldn’t be using Node otherwise!).&lt;/p&gt;&lt;p&gt;* Check out this great post about &lt;a href=&quot;https://web.archive.org/web/20140606165708/https://journal.paul.querna.org/articles/2011/12/18/the-switch-python-to-node-js/&quot;&gt;switching from Python to Node.js&lt;/a&gt;. The money quote is, “Specifically, the deferred programming model is difficult for developers to quickly grasp and debug. It tended to be ‘fail’ deadly, in that if a developer didn’t fully understand Twisted Python, they would make many innocent mistakes.” So they switched to another difficult system that fails in subtle ways if you don’t fully understand it and make innocent mistakes!&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/5663.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/5663&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Тоска по былому Интернету</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:5502</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/5502.html' />
    <created>2021-07-22T14:22:30Z</created>
    <issued>2021-07-22T17:20:00</issued>
    <modified>2021-07-22T14:26:16Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='www' />
    <category term='Хабрахабр' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2021-07-22&quot; inlanguage=&quot;uk&quot; keywords=&quot;WWW,Web,Internet,Web 1.0,Хабрахабр&quot;&gt;&lt;p&gt;На Хабрахабрі виклали &lt;a href=&quot;https://habr.com/ru/company/macloud/blog/562586/&quot; hreflang=&quot;ru&quot; title=&quot;Тоска по былому Интернету&quot;&gt;переклад&lt;/a&gt; з ангельської тексту &lt;a href=&quot;https://www.sffworld.com/forum/threads/i-miss-the-old-internet.57195/&quot; hreflang=&quot;en&quot;&gt;„I miss the old internet“&lt;/a&gt; про тугу за тим якою раніше була Всесвітня Павутина. Автор стверджує що було більше індивідуальності і контркультури. Цікаве  з обговорення під перекладом: дехто зауважує що всілякі торгаші нині майже  забили на електронну пошту як засіб спілкування з клієнтами; пошукові системи  тепер не стільки шукають скільки показують рекламу і впарюють те за що  заплатили; текст витісняється відосиками (&lt;span lang=&quot;en-US&quot;&gt;YouTube&lt;/span&gt;); народ масово сидить в загончиках соціалочок які не індексуються пошуковиками; Telegram не лише як програма для балачок а й як подоба блогам та осередок соціального життя; зникнення блогів та особистих павутинних вузлів; занепад невеликих регіональних спільнот, груп люди з яких йдуть в соціалочки. Ну і цікаве починання &lt;a href=&quot;narodweb.ru&quot; title=&quot;Премия Народное достояние Рунета&quot; target=&quot;_blank&quot;&gt;narodweb.ru&lt;/a&gt;.&lt;/p&gt;&lt;lj-cut&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/macloud/blog/562586/#comment_23148048&quot; lang=&quot;ru&quot;&gt;Первая проблема — в современном Интернете стало очень затруднительно искать информацию. Долбанные поисковики уже давно не ищут — они впаривают. Такая функция, как строгий поиск, уже не предоставляется ни одним из них. Т.е. если я хочу, чтобы введённые мною слова запроса находились по Ctrl+F на каждой из тех страничек, ссылок на которые насыплет мне поисковик — я больше не могу этого добиться.&lt;br /&gt;Теперь любой поисковик считает себя умнее пользователя и сам решает, какой чуши насыпать в выдаче. Скажем, если вы ищете в Google инструкции по VNC, то он вам насыплет кучу мусора по МТС, и фиг вы что с этим сделаете. Даже банально выкинуть из выдачи помойки-агрегаторы типа pinterest поисковики вам не позволят. Вот как вообще искать хоть что-то кроме котиков в подобных условиях?&lt;br /&gt;Вторая проблема — из Интернета очень быстро исчезает текстовый контент. Человек ленив, а записать видео или сделать подкаст не в пример проще, чем написать текстовую статью (особенно когда у вас из девайсов один только смартфон/планшет без нормальной клавиатуры). В итоге практически все туториалы теперь появляются исключительно как видеоролики и подкасты. Соответственно, они крайне неудобны (за удобство автора расплачиваются все его подписчики).&lt;br /&gt;И наконец третья проблема — Интернет постепенно прекращает своё существование. Вся движуха уходит в мессенджеры, а по сравнению с ними даже соцсети — верх удобства. Потому что там информация хотя бы могла накапливаться. Мессенджеры же — натуральная чёрная дыра, в которой через неделю информации уже не найти никаким способом.&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/macloud/blog/562586/#comment_23145488&quot; lang=&quot;ru&quot;&gt;Но недостаток соцсетей — наша информация больше не принадлежит нам. Она принадлежит корпорациям. Мы не скачиваем понравившийся нам контент — а просто лайкаем или репостим (я кстати скачиваю, но таких как я исчезающее меньшинство). Информация нередко теряется. С ютуба постоянно удаляют какие-то ролики, в соцсетях исчезают сообщества, банят пользователей… все это происходит незаметно, и вот мы незаметно теряем понравившуюся нам информацию. А могли бы и не терять — если бы она сохранялась оффлайн, и если бы расшаривалась между друзьями и подписчиками по p2p протоколам.&lt;/blockquote&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/macloud/blog/562586/#comment_23145310&quot; lang=&quot;ru&quot;&gt;Меня больше раздражает то, что куча информации ушла в неиндексируемые соцсети и видеоролики. А поисковики в ответ на половину вопросов выдают кучу мусорных страниц, где один и тот же текст разными словами набран. А что гиков стало меньше, а простых людей больше — тут ничего не поделаешь. В девяностых компьютер был гиковским устройством и интернет делался гиками для гиков. Сегодня же компьютер (телефон) есть почти у каждого, гиком быть не обязательно. Потому интернет делается для чайников. Зачастую чайниками же и делается.&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/macloud/blog/562586/#comment_23146340&quot; lang=&quot;ru&quot;&gt;Например, если раньше кто-то мог писать статьи типа &quot;Как починить радиоприемник Волна-003&quot; в своём блоге, или на сервисе блогов, где эта информация проиндексировалась бы поисковиками, и могла быть найдена каждым, а также заархивирована на archive.org, то сейчас подобная информация уйдёт в YouTube, где ее сложно найти, и где время ее жизни ограничено (YouTube удаляет старые видео и очень неохотно выдает в результатах поиска), никто не в силах создать архив копий видео YouTube. Или в Facebook, где ее вообще никто и никогда не увидит. Facebook не позволяет искать поисковым системам, не даёт возможность читать посты тем, у кого нет аккаунта (у меня — нет), встроенный поиск у него тоже практически нерабочий, и &quot;старую&quot; информацию (старше нескольких часов) он старается навсегда закопать, чтобы увеличить количество времени, проводимое пользователями на сайте (если человек не может найти что-то конкретное, значит будет долго пытаться, браузить ленту, в попытках найти искомое не используя сломанный поиск). Это отвратительно, хотя и закономерно. Так как бороться с этим явлением невозможно, я высказал своё мнение удалив аккаунты соц. сетей (прежде всего, facebook и Instagram, кстати, теперь ни одна картинка Instagram мне не показывается, когда присылают друзья, а они это делают часто).&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/macloud/blog/562586/#comment_23148282&quot; lang=&quot;ru&quot;&gt;Скажем, городской форум в моем городе пережил наплыв идиотов и жив-здоров до сих пор, нормально можно общаться. А мой, к сожалению, нет. Такое удобное средство связи было, когда за годы сидения на нём встречал одних и тех же людей, пусть и не был знаком с ними лично, но они уже примелькались и с ними можно было и обсудить интересующее и решить нужные вопросы. А сейчас все ушли в соц. сети и хотя формально количество участников стало больше, связность между ними стала меньше, в итоге не знаешь практически никого. Вот например мне нужно купить какую-нибудь хреньку, а я вообще без понятия в каком типе магазинов она продаётся. Раньше я заходил в тему на форуме, называющуюся «Подскажите где купить» и там подсказывали вплоть до адреса конкретного магазина. А сейчас где в соц. сетях проконсультироваться по такому? Вообще без понятия.&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/macloud/blog/562586/#comment_23145704&quot; lang=&quot;ru&quot;&gt;Проблема ещё в том, что интернет монополизируется. Крупные площадки вбирают в себя столько контента и набирают такую популярность, что небольшим сайтам не пробиться в выдачу. В итоге, они решают размещать контент на этих больших площадках и ещё больше снижается предложение альтернативы. На этих больших площадках сильно представлена цензура и творцы перестают ходить по краю и их контент становится очень нейтральным и беззубым. Ну и самая большая проблема, это система рекомендаций, которая показывает тебе исключительно контент из твоих текущих интересов. Как итог, у тебя сильно поляризуется восприятие мира, и ты думаешь, что большинство имеет такое же мнение, как и у тебя. Это закрывает доступ к новому опыту.&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;blockquote cite=&quot;https://www.sffworld.com/forum/threads/i-miss-the-old-internet.57195/#post-845906&quot; lang=&quot;en&quot;&gt;The Wild West metaphor is appropriate. We used to be able to do whatever we wanted. And since the internet and its culture was built by nerds and geeks, the content of the internet was built around geek culture. Special interest sites everywhere. And, everywhere, a general anti-&quot;the-man&quot; ethos. But Web 2.0 effed that up completely. When boards like this one moved off Usenet and onto website, it created two separate internets -- the &quot;above board&quot; internet for the plebs, and the original internet underneath it. As usual, the plebs are too numerous, and their internet has completely overshadowed the internet I knew and helped make in my own little corner of it.&lt;br /&gt;&lt;br /&gt;With the plebs online, we skipped gentrification and moved directly into turning the internet into a suburban bedroom community for the corporate sheeple. And god is it awful.&lt;/blockquote&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/5502.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/5502&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Вигідне становище так званих web–програм </title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:5252</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/5252.html' />
    <issued>2021-07-15T17:13:00</issued>
    <modified>2021-07-15T14:15:01Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='html' />
    <category term='www' />
    <category term='програмування' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2021-07-15&quot; inlanguage=&quot;uk&quot; keywords=&quot;WWW,Web,програмування,HTML&quot;&gt;&lt;p&gt;Клятим web–макакам дуже пощастило з WWW.&lt;/p&gt;&lt;p&gt;Не треба встановлювати чи в явному вигляді копіювати щось собі, легко знайти нові „програми“ — достатньо вбити декілька слів в пошуковику, не потрібно видаляти (просто закриваєш вкладку), не займають місце на HDD (взагалі–то займають — розмір тимчасових файлів, історії та кешу в павутинних переглядачах може розростися далеко за 1 гігабайт, але ж це не помітно). Павутинний переглядач зберігає історію відвідин, показує підказки в рядку пошуку та адресному рядку, має закладки. Все це заміняє собою умовне меню Start та робить бродіння по WWW більш зручним і відбувається саме по собі — не потрібно запускати майстра встановлення чергової програмки, не потрібно нічого видаляти; можна навіть сказати що для лінивих юзерів вигадали автоматизований аналог закладок — список найчастіше відвідуваного. Таким чином, для того щоб програмам догнати в цьому плані WWW потрібно щоб вони запускалися сходу не потребуючи встановлення і самі по собі додавали ярлики куди слід а видалення було б таким же простим як закриття вікна з сайтиком. Було б добре якби існувала якась особлива оболонка яка, якщо програма встановлена, запустить її або встановить і запустить, якщо її ще немає у користувача. Така оболонка повинна бути основним (або навіть єдиним) засобом запуску та управлінням програмами. Не має бути такого що отут я програми шукаю і встановлюю а отут я програми запускаю. Це вирішує ще одну проблему — а саме пошук нових програм, адже відпадає необхідність запускати якусь окрему приблуду (павутинного переглядача) і щось десь шукати. Це вигідно і авторам програм, чи принаймні тим хто контролює цю оболонку, тому що полегшується просування програм. Проте навіть такий підхід не дозволить повністю витіснити сайтики тому що живемо ми в епоху дешевого та швидкого Internet і народ в масі своїй не хоче завантажувати серіальчик а хоче дивитися відразу. Отже потрібно щоб ця уявна оболонка теж так могла. А для цього знадобиться ще й пошуковик щоб можна надрукувати &lt;span title=&quot;порно онлайн&quot;&gt;gjhyj jykfqy&lt;/span&gt; і відразу ж почати дрюнкати.&lt;/p&gt;&lt;p&gt;Схоже що я знайшов головну силу Webʼного гівна — пошуковики. Без них розкидані по Павутинці вузлики вже не виглядають такими привабливими. Без умовного Google частка магії втрачається адже довелося б вести список павутинних вузлів і не вийшло б дізнатися „сколько дебилов в россии“, дізнатися „как выжить в майнкрафт с модами“ або пограти в „порноігри з Сімпсонами“.&lt;/p&gt;&lt;p&gt;Отже, павутинні вузли не треба встановлюти, завантажувати і зберігати (напротивагу їм деякі програми займають не один гігабайт). Вони утворюють єдине середовище (не в останню чергу завдяки пошуковикам) універсальних сутностей в якому можна дивитися відео, слухати музику, читати тексти, переглядати картинки, відправляти пошту, переводити файли з одного формату в інший, редагувати фотографії, дивитися прогноз погоди, робити ставки, грати в ігри і т.д.&lt;/p&gt;&lt;p&gt;Пощастило і сраним комерсам — користувачеві нічого не належить, все зберігається десь там далеко і зникає щойно закриють вкладку; не потрібно перейматися оновленнями і тим що за ОС у користувачів. Не потрібно боротися з тими хто не хоче переходити на нову версію.&lt;/p&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/5252.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/5252&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Кляті вебщики відбирають в нас знання </title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:5102</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/5102.html' />
    <created>2021-07-13T07:24:59Z</created>
    <issued>2021-07-13T10:34:00</issued>
    <modified>2021-07-13T16:13:11Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='html' />
    <category term='javascript' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2021-07-13&quot; inlanguage=&quot;uk&quot; keywords=&quot;WWW,Web,журнали,преса&quot;&gt;&lt;p&gt;Якось замислившись над нетривалістю життя я обурився злочинним тим фактом що значна кількість павутинних вузлів будучи по суті енциклопедіями чи довідниками чи й просто зібранням текстів різного ступеню корисності не має копії представлених матеріалів у вигляді придатному для вжитку і розповсюдженні. Жадібні власники не хочуть ділитися з іншими а хочуть стати заможними та знаменитими за рахунок постійного притоку спраглих до знань відвідувачів. Вони хочуть щоб ми витрачали матеріальні та психічні ресурси на користування їхніми вбогими творіннями. А коли вони підуть в небуття, то заберуть все з собою. Дуже дратує те що навіть автори всіляких програмістських штукенцій часто не переймаються і просто викладають документацію на своїх павутинних вузлах без можливості завантажити її. Причому це не просто декілька HTML–файлів. Частенько це сторіночки наповнені ЯваСценарієм під завʼязку. Яскравий приклад це &lt;a href=&quot;https://valadoc.org/&quot; hreflang=&quot;en-us&quot; title=&quot;The canonical source for Vala API references.&quot;&gt;valadoc.org&lt;/a&gt;. Замість того щоб підготувати довідку у вигляді зрозумілому для &lt;a href=&quot;https://wiki.gnome.org/Apps/Devhelp&quot; hreflang=&quot;en-us&quot; title=&quot;Devhelp is a developer tool for browsing and searching API documentation.&quot;&gt;GNOME Devhelp&lt;/a&gt; (тим паче що &lt;a href=&quot;https://wiki.gnome.org/Projects/Vala&quot; title=&quot;Vala — Compiler Using the GObject Type System&quot; hreflang=&quot;en-us&quot;&gt;Vala&lt;/a&gt; це мова в першу чергу для полегшення написання програм для GNOME) ми тепер маємо павутинний вузол програмульки на якому, мабуть, нормально працюють лише в Google Chrome. Для цього павутинного вузла були написані програми на PHP та JavaScript а для того щоб запустити все це в себе знадобиться 4 Гб вільного місця на HDD, Node.js, PHP, Sphinx та ще купа програм. От отак щось таке просте як текстові файлики з переліком функцій та їхнім описом перетворюється в штучний виріб, павутинну програму зі своїм власним UI яка дублює вже існуючу програму. Також можна згадати про &lt;a href=&quot;https://sci-hub.st/&quot; title=&quot;The first pirate website in the world to open mass and public access to tens of millions research papers&quot;&gt;Sci–Hub&lt;/a&gt; який весь такий за свободу, але чомусь доступ до зібраних матеріалів дають лише через формочку у них на головній і ніяк інакше. Немає навіть, наприклад, FTP чи P2P. І взагалі, в мене таке враження що чим більш мудрагельськими стають всілякі там HTML та CSS разом з ЯваСценарієм тим більше закуклюються вебщики заодно перешкоджаючи розповсюдженню та свободі вжитку всього більш–менш корисного ховаючи його за нашаруваннями зі своїх ідіотських технологій.&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;http://i.piccy.info/i9/680af35aaab8ab047bdfe9313a53480a/1626163505/52493/1435534/87126mdn_does_not.gif&quot; width=&quot;600&quot; alt=&quot;В Internet explorer 8 не відривається жодна сторінка з https://developer.mozilla.org&quot; /&gt;&lt;figcaption&gt;Вебщики з &lt;abbr title=&quot;Mozilla Developer Network&quot;&gt;MDN&lt;/abbr&gt; не хочуть щоб я вчився. Internet explorer 8 недостатньо для перегляду тексту.&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Згадується мені і відомий &lt;a href=&quot;https://ag.ru/&quot; title=&quot;AG.ru — старейший игровой сайт, история которого начинается в 1998 году. За это время мы собрали огромную базу компьютерных игр, кодов к ним, статей и видео-роликов.&quot;&gt;ag.ru&lt;/a&gt; який віднедавна перетворився на щось стильно–модно незрозуміле. А от якби воно  існувало у вигляді програми–оболонки для каталогу відеоігор, то зміни були б не такими критичним.&lt;/p&gt;&lt;p&gt;І, накриклад, довідник по &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; на &lt;a href=&quot;http://htmlbook.ru/&quot;&gt;htmlbook.ru&lt;/a&gt;. Існуючи у вигляді CHM дані були б доступні й без постійного підключення до Internet (а це значить що не треба запускати прожерливого переглядача який буде мотати електрику виконуючую всіляку AJAX парашу і рекламне гівно), не було б залежності від хостингу і від власників павутинного вузла. Також у випадку з павутинними вузлами подібними до htmlbook.ru довідник облікається в форму програми яку потрібно написати і обслуговувати — я маю на увазі роботу HTTP сервера і павутинні програмульки. Звичайнісінький довідник вже не просто якийсь там CHM файлик а цілий комплекс.&lt;/p&gt;&lt;p&gt;Чим більше ми покладаємося на інформацію розміщену деінде тим вразливішими і залежними ми стаємо. Тож пишіть програми замість сайтиків, видавайте електронні журнали, гнобіть поціновувачів JavaScript і творіть всяке інше добро!&lt;/p&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/5102.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/5102&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Хабрахабр все</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:4771</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/4771.html' />
    <issued>2021-04-26T15:11:00</issued>
    <modified>2021-04-26T11:55:56Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='javascript' />
    <category term='spa' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2021-04-26&quot; inlanguage=&quot;uk&quot; keywords=&quot;WWW,Web&quot;&gt;&lt;p&gt;Ідіоти–явасценаристи зі своїми модними лайнотехнологіями перемогли на &lt;a href=&quot;https://habr.com/ru&quot; hreflang=&quot;ru&quot;&gt;Хабрахабрі&lt;/a&gt;. &lt;a href=&quot;https://habr.com/ru/company/habr/blog/552384&quot; hreflang=&quot;ru&quot; rel=&quot;details&quot; target=&quot;_blank&quot;&gt;Открытый бета-тест новой версии Хабра&lt;/a&gt;. Тепер сторіночки будуть завантажуватися довше, стануть важчими, займатимуть більше оперативної памʼяті та перестануть відкриватися в тих більш ранніх павутинних переглядачах в яких вони ще досі відкривалися.&lt;/p&gt;&lt;lj-cut&gt;&lt;p&gt;Як мені здалося більшості з тих хто &lt;a href=&quot;https://habr.com/ru/company/habr/blog/552384/comments/&quot;&gt;написав щось з цього приводу&lt;/a&gt; зміни не сподобалися, але є й прихильники–лайножери яких все влаштовує.&lt;/p&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/habr/blog/552384/&quot; title=&quot;Виправдовування власної ліні&quot;&gt;Много лет существовали две версии Хабра: десктопная и мобильная. Они использовали разный стек технологий, поэтому на разработку каждой новой фичи мы тратили вдвое больше времени. К тому же десктопная версия давно устарела, что добавляло ещё больше проблем. Десктопную версию писали, без преувеличения, несколько поколений разработчиков, поэтому некоторые из используемых технологий успели окончательно устареть. Последние несколько лет каждая новая фича становилась верхушкой айсберга рефакторинга и копаний в legacy-коде. В конечном счёте мы устали от этого «монстра» и решили победить его.&lt;/blockquote&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/habr/blog/552384/&quot; title=&quot;Демонстрація лайножерства і байдужого ставлення до користувачів&quot;&gt;Чтобы ускорить процесс разработки и внедрения новых фич, мы решили оставить только одну версию сайта, мобильную.&lt;/blockquote&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/habr/blog/552384/&quot; title=&quot;Тепер всі будуть страждати&quot;&gt;В результате наших трудов мобильная версия по функциональности догнала десктопную и теперь на любых устройствах пользователи могут видеть одну и ту же версию с одним интерфейсом.&lt;/blockquote&gt;&lt;p&gt;Скарги і трохи аналітики від &lt;a href=&quot;https://habr.com/ru/users/DaemonGloom&quot; rel=&quot;contact&quot;&gt;DaemonGloom&lt;/a&gt;:&lt;/p&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/habr/blog/552384/comments/#comment_22949792&quot;&gt;&lt;blockquote cite=&quot;https://habr.com/ru/company/habr/blog/552384/&quot;&gt;Чтобы ускорить процесс разработки и внедрения новых фич, мы решили оставить только одну версию сайта, мобильную.&lt;/blockquote&gt;&lt;p&gt;Означает ли это, что статью с условной тысячей комментариев теперь будет не открыть? Раньше на телефоне (Galaxy S10, не самое слабое устройство даже сейчас) мобильная версия на таких статьях умирала, спасала только десктопная. Сейчас не спасёт ничто?&lt;/p&gt;&lt;br&gt;&lt;p&gt;&lt;em&gt;добавлено&lt;/em&gt;&lt;br&gt;Проверил на телефоне. Комментарии к статье &lt;a href=&quot;https://habr.com/ru/post/543688/&quot; hreflang=&quot;ru&quot;&gt;https://habr.com/ru/post/543688/&lt;/a&gt; в мобильной версии не грузятся вообще, попытка далее уйти по ссылке вешает браузер. Десктопная версия — при переходе в случайное место страницы прогресс-баром телефон тратит секунд 6 на отображение белой страницы, но после этого комментарии показывает.&lt;/p&gt;&lt;br&gt;&lt;p&gt;&lt;em&gt;добавлено, часть 2&lt;/em&gt;&lt;br&gt;Мобильная версия комментариев к указанной статье на компьютере ведёт себя точно таким же образом, но за минуту смогла загрузиться. Десктопная версия на компьютере — текст почти моментально, картинки подгружаются ещё секунд десять.&lt;/p&gt;&lt;br&gt;&lt;p&gt;&lt;em&gt;добавлено, часть 3&lt;/em&gt;&lt;br&gt;Очень интересно смотрится при этом потребление ресурсов вкладкой. 100 процентов процессора, 1.1 гига ОЗУ на вкладку. Против 0 и 300 мегабайт десктопной, которая ещё и саму статью с картинками содержит.&lt;/p&gt;&lt;br&gt;&lt;img title=&quot;Скриншот менеджера вкладок&quot; src=&quot;https://habrastorage.org/r/w1560/webt/3f/rp/ye/3frpyecv__q5nr1uc_ylqpfpbto.png&quot; /&gt;&lt;br&gt;&lt;p&gt;&lt;em&gt;добавлено, часть 4&lt;/em&gt;&lt;br&gt;Понадеялся, что бета-версия чем-то отличается от старой мобильной, включил её. Но нет, все вышесказанное подтверждаю и на ней. Выключил обратно.&lt;/p&gt;&lt;/blockquote&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/4771.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/4771&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Пузырь 2.0</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:3825</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/3825.html' />
    <created>2021-01-25T10:02:30Z</created>
    <issued>2021-01-25T13:10:00</issued>
    <modified>2021-03-16T06:58:03Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;p&gt;Автор — &lt;a hreflang=&quot;ru&quot; href=&quot;https://b-mahno.livejournal.com&quot; type=&quot;text/html&quot;&gt;b-mahno.livejournal.com&lt;/a&gt;. Оригінал — &lt;a href=&quot;https://b-mahno.livejournal.com/689.html&quot; hreflang=&quot;ru&quot; type=&quot;text/html&quot;&gt;Пузырь 2.0&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;article&gt;&lt;p&gt;В последнее время стали крайне популярными сервисы так называемого WEB 2.0, никто толком не знает что это такое, но все уверены, что это страшно круто и что без цифр 2.0 в интернете делать (во всех смыслах) уже нечего. Вообще в современном киберпространстве сложилась крайне любопытная (если не сказать – парадоксальная) ситуация. Если проанализировать основные популярные ресурсы, то можно найти у них некоторые общие черты и самая первая из них – примитивизм (если не сказать убогость) функционального наполнения. Причем количество сервисов на иных сайтах просто огромно, но среди них обычно нет ни одного качественного: ужаснейшим образом масштабированные аватары, ошибки в формах ввода почтовых и электронных адресов, делающие невозможным их использование, отсутствие человеческого (а частенько и вообще любого) поиска и многое тому подобное. Часто вся эта куча кривых скриптов сгруппирована или названа абсолютно неудобоваримым образом, делая трудновыполнимыми элементарные операции с ресурсом. Даже дизайн некоторых из этих «порталов» заслуживает исключительно непечатных выражений.&lt;/p&gt;&lt;lj-cut&gt;&lt;p&gt;Я хочу сразу предостеречь аудиторию от поспешных выводов и спешу сообщить, что сам я не отношусь ни к web-разработчикам, ни к дизайнерам. Но в то же время я принимаю непосредственное участие в становлении информационного пространства – я прикладной программист консервативных настольных систем (в последнее время занимаюсь также и корпоративными web-приложениями, так что в курсе всей подноготной) и смотрю на эволюцию веба большей частью как простой пользователь. В то же время я прекрасно ориентируюсь в программировании и алгоритмизации, представляю себе реальную сложность той или иной задачи и прошу не воспринимать данную статью как брюзжание очередного несостоявшегося &quot;покорителя интернета&quot;. Мотивом же, побудившим меня взяться за перо, стало постепенное наступление web-технологий на мою территорию – десктоп. И я вынужден признать, что мне это очень не нравится.&lt;/p&gt;&lt;p&gt;Для того чтобы лучше понять мою позицию, вернемся на десять лет назад. Интернет тогда уже окончательно освободился от военных оков и представлял собой не голую среду передачи пакетных данных, а инструмент для обмена информацией вполне «человеческого» характера. Рядовой интернетчик тогда ходил по информационным ресурсам, которые ставили перед собой задачу донести до него ту или иную информацию. То, что мы сегодня называем вебом, было чем-то вроде сильно разрозненной базы знаний, причем база эта была преимущественно статическая. Интерактивные сервисы располагались за его (веба) пределами и были представлены определенным набором программного обеспечения, реализующего тот или иной протокол взаимодействия с внешним миром. В качестве примера такого приложения можно назвать еще не до конца забытые почтовые клиенты (а ведь широко использовались и специализированные клиенты для чатов, чтения новостей, навигации по удаленным файловым хранилищам и многие другие). Все эти сервисы поддерживались на плаву как правило довольно квалифицированными специалистами, что накладывало определенный отпечаток и на потенциальных потребителей данных услуг: они большей частью были умны, дисциплинированны и хоть немного понимали с чем имеют дело.&lt;/p&gt;&lt;p&gt;Однако «аппетит приходит во время еды», и в определенный момент некоторые из простых пользователей решили, что не пристало им только созерцать и принялись создавать сначала робкие и смешные домашние странички-визитки, а потом и более сложные системы преимущественно развлекательного характера. Отличительной особенностью этих проектов был штучный дизайн и обилие графических элементов в оформлении и наполнении, а также зачатки коммерциализации. Владельцы этих ресурсов во главу угла, как правило, ставили не информацию, а внешнюю привлекательность и ориентированность на массы. Отчасти благодаря им, на тот период приходится и рост доступности и скорости доступа в интернет, из-за чего в него хлынуло большое количество людей, уже не имеющих никакого представления об информационных технологиях. Этот поток был как нельзя кстати для хозяев таких развлекательных и коммерческих сайтов и на волне роста популярности они быстро и легко брали семизначные займы «на развитие» (потому что инвесторы тоже только что дорвались до новой игрушки и дружно закричали «хочу!»). Результатом этих событий стал стремительный перегрев рынка и мощный коллапс большой части интернет-бизнеса – знаменитый «крах доткомов», основательно и надолго подорвавший доверие инвесторов к самой идее бизнеса в Сети.&lt;/p&gt;&lt;p&gt;Кризис сильно поохладил также и пыл проповедников нового порядка и некоторое время казалось, что интернет вернется в свое изначальное состояние, но с некоторыми поправками на значительно возросшее количество праздношатающейся публики. Однако под руинами рынка были похоронены далеко не все «стартапы». Некоторым из них удалось не только устоять на своих двоих, но и подгрести под себя еще несколько «тушек» своих менее удачливых конкурентов и/или компаньонов, превратившись таким образом в сильные «концентраторы зрительского внимания», они и начали новую эпоху. Именно на основе анализа общих черт этих web-проектов несколькими годами позже и была сформирована (если это слово вообще уместно) концепция WEB 2.0.&lt;/p&gt;&lt;p&gt;Некоторое время развитие интернет-сервисов шло преимущественно экстенсивным путем – появлялись в основном только новые завлекаловки для публики. Этот процесс был вполне закономерным, однако именно он нанес первый удар по здравому смыслу и адекватности сетевого сообщества. Дело в том, что волна стартапов вынесла на берег «нового интернета» далеко не интеллектуальную элиту человечества. Вся эта масса в силу разных причин оказалась категорически не готова принимать сложившиеся ранее правила игры и требовала от интернета понятных для себя сервисов. А так как примерно в то же время рекламодатели наконец разглядели в лице веба хорошую площадку для своей деятельности, при помощи нехитрого инструментария вся эта бесхозная толпа могла быть довольно просто превращена в живые деньги (чем поначалу и кормился огромный лагерь нового вида интернет-паразитов). Таким образом спрос породил адекватное предложение: появились непрерывно тормозящие и при этом жрущие трафик мегабайтами веб-чаты, вошли в широкий обиход (где можно и где нельзя вытеснив настольные клиенты) веб-интерфейсы к почтовым сервисам, наросли как грибы после дождя форумы с бестолковыми анимированными смайлами (и малолетними смайл-флудерами в каждой ветке) и многое другое, положившее начало некоторой деградации веба. В прочем, несмотря на очевидные отрицательные тенденции все могло быть вполне сносно (вам «чмоки-поки» в веб-чатах, нам Usenet/IRC и можно жить в мире), если бы в определенное количество горячих голов не ударила м… мысль о полной самодостаточности веба как платформы для обработки информации. Конечно, если учесть устойчивую аллергию на интернет у подавляющего большинства «богатых дядюшек», все могло просто погибнуть в зародыше. Но не обошлось… Уж очень кстати оказалась и новоиспеченная концепция – инвесторам быстренько навешали лапши про «новую эпоху», рассказав что 2.0 это намного (как минимум в два раза) круче чем 1.0, и что теперь уж точно бояться нечего. И начали как грибы после дождя появляться проекты, гордо несущие знамя с цифрами 2.0, но в тоже время без каких-либо принципиальных отличий от старых добрых «стартапов» образца 2000-го года.&lt;/p&gt;&lt;p&gt;Я пока не буду акцентировать внимание на критериях принадлежности к «элите» (об этом ниже), но хочу довести-таки до читателя скрытую (и основную) идею концепции. &lt;b&gt;WEB 2.0 – это не технология, это маркетинг.&lt;/b&gt; Просто новая красивая обертка, для в общем-то старых и давно известных вещей или их новых неуклюжих аналогов. Изобретенный заново велосипед, если угодно. Ничего не ново под Луной, и в этом не было бы никакой беды, если бы не одно «но», которое лежит как раз в области технологий.&lt;/p&gt;&lt;p&gt;Техническая база оказалась категорически не готова к тем сервисам, которые требовались для ношения гордого имени. Изначально протокол HTTP и язык разметки HTML разрабатывались для того веба, который был десять лет назад, в них просто-напросто не закладывались возможности, требуемые «новой эпохой». Сама сущность языка разметки и принципы взаимодействия браузера и сервера заведомо ставят жирный крест на любую попытку приблизиться к примитивному майкрософтоскому Paint Brush, не говоря уже о чем-нибудь более функциональном. Кроме того, просто похабно написанные стандарты HTML, допускающие разные трактовки конструкций, провоцировали проблемы совместимости браузеров. Отсутствие формализации сессии, разные диалекты JavaScript (который сам по себе уже был первым костылем, подпирающим ущербную сущность веба как программной платформы), появление в браузере от Microsoft  языка VisualBasic Script, разная трактовка стандартных и разные наборы расширенных тегов породили настоящий бардак. Жалкие попытки w3org хотя бы частично прекратить безобразие путем перехода на XHTML в итоге бесславно разбились о твердые лбы огромного количества новоиспеченных веб-девелоперов.&lt;/p&gt;&lt;p&gt;И это самое печальное – такое положение дел в совокупности с упомянутой выше потребностью в массовых примитивных сервисах породили новое поколение разработчиков. Так называемых «программистов», для которых непосильной является задача сортировки списка, которые уже просто физически не способны понять смысл слов «тип данных», которые стремятся забиться в самый дальний угол комнаты, если кто-нибудь вдруг упомянет об ООП. Я же не говорю про ассемблер и таблицу прерываний, не требую от всех этих людей знание основ модели OSI (хотя как раз им она и не помешала бы), речь идет об общеотраслевых принципах, к которым человечество шло шестьдесят лет! А новое поколение вот так просто пришло и сказало «мы этого вашего ООП не понимаем» и активно занялось отбрасыванием целой отрасли на сорок лет назад.&lt;/p&gt;&lt;p&gt;Тут я в первую очередь имею в виду тех, кто для ваяния своих «шедевров» использует поистине шедевральный инструмент – PHP. Любой традиционный программист после детального знакомства с ним начинает ругаться матом и спрашивать как на &lt;i&gt;этом&lt;/i&gt; можно вообще хоть что-нибудь написать? Как можно всерьез воспринимать инструмент, который даже в таком тривиальном действии как поиск вхождения подстроки ведет себя непредсказуемо? А виновато тлетворное влияние всех тех вольностей, которые царили ранее и царят поныне в HTML и JavaScript. Результатом использования таких средств, постоянно ставящих палки в колеса разработчику, отчасти и является все то убожество, которое мы вынуждены каждый день наблюдать на просторах веба. Невозможно на базе таких технологий создавать полнофункциональные аналоги пристойных настольных приложений, принципиально невозможно.&lt;/p&gt;&lt;p&gt;Отчасти эту проблему осознавали и апологеты нового порядка, однако либо инерция мышления, либо страх остаться со своими идеями на обочине прогресса, не позволили им принять волевое решение и попытаться создать что-либо действительно пригодное. Вместо этого они начали пачками плодить заплатки на голую задницу веба в виде AJAX, DOM и тому подобных припарок, которые хоть и скрасили общую убогость платформы, но превратить ее во что-то удобоваримое так и не смогли (повысив попутно «цену билета» в «современный веб» как минимум на порядок). Вместо каких-либо действенных мер по приведению возможностей веба как программной платформы хотя бы до уровня DOS, его конструкторы стали пачками изобретать велосипеды и плодить бредовые &quot;атрибуты вебдванольности&quot; (или это только мне кажутся бредовыми понятия типа &quot;дизайн в стиле WEB 2.0&quot; или обязательное наличие блога и RSS-ленты?).&lt;/p&gt;&lt;p&gt;О некоторых из этих признаков хотелось бы высказаться особо, уж больно накипело. У меня после очередного знакомства с очередной &quot;технологией&quot; из арсенала вебдванольщиков возникло устойчивое ощущение, что среди них нет ни одного человека, видевшего интернет те же десять лет назад. Иначе просто невозможно объяснить появление уже упомянутого RSS (оно же Atom, если смотреть наискосок) в ипостаси средства взаимодействия с конечным пользователем. Мне просто интересно, чем же NNTP не устраивал ваятелей «нового пространства»? Очевидно только тем, что базируется не на модном XML… Когда мне предлагают подписаться на RSS-рассылку какого-нибудь форума, я чувствую себя так, как будто мне предлагают в магазин через дорогу слетать на самолете (включая все необходимые для этого действия: поездку в аэропорт, покупку билетов по соответствующей цене, досмотр вещей, металлодетектор, ожидание летной погоды и т.д.). &lt;/p&gt;&lt;p&gt;Для тех, кто не знает особенностей NNTP объясню почему. RSS-лента представляет собой XML-файл с информацией (заголовками и/или сообщениями), который предполагается загружать с сервера по протоколу HTTP и на стороне клиента уже разбирать и представлять в удобоваримом виде. В то же время NNTP – это протокол передачи сообщений, ориентированный на обмен отдельными сообщениями. Там где в случае RSS мне нужно постоянно скачивать весь файл в надежде найти там одно новое сообщение, при работе через NNTP клиент дает запрос на сервер и получает список только тех, сообщений, которые добавились с момента последнего взаимодействия. Кроме очевидного выигрыша в трафике, исключается также возможность пропустить сообщения: сервер NNTP аккуратно напомнит на чем мы остановились в прошлый раз и предложит продолжить именно с этого места, в то время как для RSS-клиента сообщения, не попавшие в последнее обновление являются утерянными безвозвратно. А кроме всего написанного протокол NNTP изначально создавался для построения целых сетей из взаимосвязанных серверов, которые позволяют добавлять сообщения на один узел, а читать – со всех остальных. В общем, налицо подмена старой и очень мощной технологии, новомодной и бестолковой поделкой. Причем преподноситься это как неимоверное благо, хотя по сути является неоспоримым шагом назад.&lt;/p&gt;&lt;p&gt;Идем далее, теперь у нас на очереди AJAX. Что это такое? Какой-нибудь маркетолог от WEB 2.0 начнет вещать примерно следующее: «это новая революционная технология позволяющая клиенту взаимодействовать с сервером на качественно новом уровне…» и далее в том же патетическом духе. Однако все гораздо прозаичнее, и выражаясь техническим языком, AJAX – это  средство обновления содержимого web-странички без полной ее загрузки с сервера. То есть очередная надстройка над «сладкой парочкой» HTTP/HTML, и очередная попытка превратить их в хоть какое-нибудь подобие программной платформы. Попытка не то чтобы абсолютно безуспешная, но в свете остальных проблем на пути к «светлому бедующему нового веба» она как мертвому припарка. Любопытно также, что по причине довольно большой распространенности (чаще всего с ее помощью реализованы разные облегчающие работу, но не необходимые «удобства») само по себе использование этой технологии на ресурсе не делает его даже частично «вебдванольным». В общем, эту технологию постепенно двинули из «элиты» в простые смертные.&lt;/p&gt;&lt;p&gt;Далее, согласно концепции, истинный представитель нового веба должен использовать агрегацию с другими сервисами на внешних ресурсах (естественно тоже «вебдванольных»). Тут, конечно же, опять не обошлось без очередного изобретения велосипеда, но основная проблема как раз в другом. Постоянное заимствование чужого контента через RSS-ленты и специфические API как бы освобождает от необходимости создавать что-то свое. Уже сегодня наплодилось бесчисленное множество непонятных сайтов, наполненных исключительно краткими анонсами статей со ссылками на другие сайты. Причем это не дорвеи, а претендующие на популярность публичные ресурсы. Они тратят гигантские усилия на свою раскрутку, навешивают по тонне рекламы на каждую страничку, не представляя из себя абсолютно ничего ценного. Неужели к этому нужно стремиться?&lt;/p&gt;&lt;p&gt;Я не хочу сказать, что интеграция является абсолютным злом, иногда в результате нее получаются действительно полезные и мощные ресурсы, но, к сожалению это случается крайне редко. Да и зависимость от левых сервисов стабильности совсем не прибавляет.&lt;/p&gt;&lt;p&gt;Следующим критерием «вебдванольности» является обратная связь с пользователями. Я не буду снова говорить о «свежести» самой идеи, а остановлюсь на одном из проявлений этого явления. Если такие вещи как голосования, оценки и комментарии к материалам существовали давным-давно и в категорию перечисляемых критериев попали так сказать по инерции, то таком модном явлении как блоги нужно поговорить особо. Само это слово ворвалось в наш лексикон как-то очень резко и бесцеремонно. Представляя из себя смесь форума и гостевухи (причем не в лучших пропорциях), блоги стали шириться среди сетевого пролетариата с неимоверной быстротой. Каждая секретарша мечтала раздобыть заветный номерок для регистрации на LiveJournal (если кто еще помнит как это было), а находя его, тут же заводила публичный блог и начинала постить туда свои излияния. Нет, я еще понимаю когда публичный журнал заводит какой-нибудь известный или просто незаурядный человек и таким образом общается со своими единомышленниками и оппонентами. Или на худой конец просто тот, у кого есть какая-нибудь мысль или любопытный материал и нужна площадка для его обнародования. Но хоть убейте меня, я не понимаю зачем заводить блог для тех невнятных писулек, которыми на 99% заполнен упомянутый выше LiveJournal. Хотя сама жизнь, похоже, разделяет мое недоумение и после столь стремительного взлета, количество таких блогов уже быстро идет на убыль. Просто пришло понимание, что никто эти писульки не читает, никому они не интересны, и никак не может количество пишущих превышать количество читающих.&lt;/p&gt;&lt;p&gt;Это что касается самой сути блогов как явления, если же вернуться к критериям «вебдванольности», то наличие на сайте той или иной формы блога также является если не необходимым, то уж точно крайне желательным. Мне хотелось бы спросить, что делать блогу на сайте по продаже спичек и презервативов, но чувствую, что ответа буду ждать вечно, поэтому задам лучше такой вопрос: что такого сакрального имеется в слове «блог», что его наличие – это путь в WEB 2.0, а присутствие традиционного форума – нет? Хотя, наверное, я на этот вопрос уже ответил сам, жирным шрифтом в седьмом абзаце….&lt;/p&gt;&lt;p&gt;Ну и последний на этот раз критерий – наполняемость ресурса самими пользователями. Однажды в одной детско-восторженной статье я прочитал фразу, смысл которой сводился к тому, что ресурсы WEB 2.0 являются основным источником достоверной информации и актуальных ссылок в интернете. Мне не хочется даже комментировать эту глупость. Только полностью изолированному от интернета человеку не известны случайные и специальные искажения информации в сетевой энциклопедии Wikipedia и других подобных проектах. Только ни разу не участвовавший в тех или иных сетевых сообществах человек не знает, как быстро устаревают приведенные простыми пользователями ссылки (ведущие обычно в разные хламовники). В результате внедрения подобных технологий зашумленность интернета растет, и в нем становится временами невозможно найти не то что достоверную, но и просто актуальную информацию.&lt;/p&gt;&lt;p&gt;Что же такое WEB 2.0? Это, если выражаться фигурально, старенький, но исправный «москвич», который покрасили в «металлик», вставили в фары лампочки по двести ватт, навесили на него полутонный «кенгурятник», а камеры в колесах зачем-то заменили на детские надувные плавательные круги. При этом получилось транспортное средство, которое в принципе ехать может, но медленно и не долго. Зато оно имеет модный вид, и прохожие оборачиваются.&lt;/p&gt;&lt;p&gt;Резюмировать свой опус мне хотелось бы некоторыми выводами и соображениями. Выводы неутешительны. Количество разнообразных бредовых сервисов будет расти. За безобидными и бестолковыми виджетами и пародиями (в части эргономики использования) на текстовые редакторы пойдут куда более страшные вещи. Уже существуют веб-ориентированные графические редакторы, а не за горами также и редакторы видео и аудиоматериалов в окне браузера. Апофеозом этой тенденции запросто может стать сетевой компьютер, который будучи лишен жесткого диска и какой-либо значительной вычислительной мощности, из программ будет иметь только браузер и пригоден будет только к функционированию в режиме on-line по не менее чем гигабитному каналу. В результате мы получим очень медленную систему с высоким временем реакции, не приспособленную для целого ряда обыденных в настоящий момент операций. Все документы и личная информация будет лежать на серверах в полном распоряжении их (серверов) владельцев. Платить за использование таких индивидуальных вычислительных сред люди будут вынуждены живыми деньгами или просмотром рекламы и стопроцентной информационной зависимостью от хозяев сервисов. В общем, компьютер запросто может постепенно превратиться в штуку, гораздо более бестолковую, чем телевизор.&lt;/p&gt;&lt;p&gt;Путей решения проблемы функциональности web-платформы я вижу два. Первый путь состоит в том, чтобы «не впихивать невпихуемое» и оставить веб просто информационным пространством, а средства обработки информации пусть и дальше остаются настольными (или распределенными) программами.&lt;/p&gt;&lt;p&gt;Понятно, что этот путь никто не поддержит, поэтому возможен промежуточный вариант. Выбросить на помойку все существующие браузеры, протоколы, языки разметки, скрипты (JS, VBS и обязательно – PHP). А вместо всего этого зверинца создать стройную (и наконец однозначную!) платформу сетевых приложений, в которой сессия – это сессия, где интерфейс отрисовывается согласно четким векторным командам серверной части скомпилированного заранее приложения и выглядит всегда одинаково. Где клиентская часть использует скомпилированные на этапе разработки полнофункциональные скрипты и работает без постоянных пинков и ненужных обновлений с перерисовками. Одним словом выбросить ненужную прослойку, а приложения писать так, чтобы критичные ко времени реакции события обрабатывались у клиента, а требовательные к ресурсам, если этого так хочется, – на сервере. При этом граница между клиентским и серверным кодом должна быть плавающей, и в идеале пользователь должен иметь возможность сам провести ее в каждом конкретном случае исходя из своих возможностей и потребностей (вплоть до полностью клиентского или полностью серверного запуска).&lt;/p&gt;&lt;p&gt;Частично это уже реализовано разнообразными модулями ActiveX, к которым, по сути, относятся технологии Flash и Java Applets. Однако множество наследственных ограничений, а местами и общая ущербность таких продуктов не обещает нам практически никаких улучшений.&lt;/p&gt;&lt;p&gt;Что касается дальнейшей судьбы WEB 2.0, то мне кажется что пора ждать еще одного 2001-го года.&lt;/p&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/3825.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/3825&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>HTTP всюди</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:3557</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/3557.html' />
    <issued>2021-01-24T15:17:00</issued>
    <modified>2021-01-24T11:59:55Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='http' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2021-01-24&quot; inlanguage=&quot;uk&quot; keywords=&quot;WWW,Web,HTTP&quot;&gt;Захлинаючись власним обуренням хочу звернути увагу шанованої публіки на доволі цікаву річ. &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt; використовують всюди де треба і де не треба. Створений як протокол для передачі гіпертексту він, за рахунок погромістів які потягли його й в інші області своєї діяльності, проник за межі Всесвітньої павутини та павутинних переглядачів і тепер ледь не кожна програма яка обмніюється даними через Всемережжя робить це по протоколу передачі гіпертексту навіть якщо вона ніяк не повʼязана з Павутиною. Скоро дійде до того що навіть торренти будуть по &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt;. Навіть обісцяні відосики по &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt;. Не так давно 99% всіх відосиків передавалися по протоколу &lt;abbr title=&quot;Real Time Messaging Protocol&quot;&gt;RTMP&lt;/abbr&gt;. Щоправда протоколу закритому і від Adobe, та все ж спеціально створеному для цього, а нині майже все вантажиться &lt;abbr title=&quot;Asynchronous JavaScript And XML&quot;&gt;AJAX&lt;/abbr&gt; чи ще якось по &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt;. І я, не розбираючись в темі, впевнений що &lt;abbr title=&quot;Real Time Messaging Protocol&quot;&gt;RTMP&lt;/abbr&gt; для перегляду відео набагато кращий за срань по &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt;. Виходить так що погромісти, користуючись тим що протокол для передачі гіпертексту так чи інакше підходить не лише для гіпертексту, перетворили &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt; на щось на кшталт основи для своїх власних недопротоколів. Не буду упередженим і зауважу що винні не лише погромісти а й те що в наш час web–лайна &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt; є шляхом найменшого опору. І вся ця пиздобратія потихеньку підʼїдає світ нормальних людей, нормальних програм та спеціалізованих протоколів для нормальних людей.&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/3557.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/3557&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Чому діти та бидло віддають перевагу webʼним «програмам»</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:3151</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/3151.html' />
    <issued>2020-10-31T00:03:00</issued>
    <modified>2020-10-30T21:08:30Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='internet' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;article itemtype=&quot;http://schema.org/BlogPosting&quot; datecreated=&quot;2020-10-31&quot; inlanguage=&quot;uk&quot; keywords=&quot;WWW,Web&quot;&gt;&lt;p&gt;Час від часу бачу як лізуть в Web по калькулятор,  по книжку яку читають прямо в переглядачі (і заодно дивляться рекламу), по одну й ту ж саму музику яку простіше було б просто одноразово завантажити а не слухати з сайтику. В місцевій забігайлівці власниця вмикала музику з YouTube через що постійно доводилося слухати рекламу. На власні очі бачив як явасценарист-струмер замість звичайного калькулятору запускав Хромога і користувався калькулятором на сторінці пошукової видачі Google. Дратує неімовірно. Замість перегляду одних і тих самих кліпів Брітні Спірс на YouTube в шакальній якості завантаж &lt;em&gt;всі&lt;/em&gt; її відео і дивись поки очі не відсохнуть! Замість постійного пошуку документації в &lt;abbr&gt;WWW&lt;/abbr&gt; встанови Zeal і насолоджуйся життям! Подумав і склав список чому воно так.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Оскільки Всесвітня павутина це така собі ноосфера в якій є все і оскільки вона протягнула свої щупальця ледь не в кожен дім і для багатьох основний час проведений за &lt;abbr&gt;ЕОМ&lt;/abbr&gt; приходиться на &lt;abbr&gt;WWW&lt;/abbr&gt; (відео, смішнявки, порно, соціалізація через соціалочки та всілякі аськи) і для багатьох web-вузлів не існує програми-замінника під Вікна, то чом би й ні. Народ звик і для них переглядач &lt;abbr&gt;WWW&lt;/abbr&gt; ніби як затьмарив собою все інше. А зважаючи на тотальне ламерство може бути так що багато хто навіть і не підозрює що таке ж є й поза межами їхнього улюбленого переглядача.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Краса чи то пак естетика. Всілякі калькулятори, програвачі аудіо, конвертори валют, сервіси по обрізці &lt;abbr&gt;MP3&lt;/abbr&gt;, перекладачі, словники та інша дрібнота почасту має великі яскраві кнопки, тіні, анімації та нетиповий вигляд чим приваблює всілякий скот. І вони готові чекати поки запуститься переглядач, готові витрачати час на пошук в Google, готові чекати поки воно завантажиться, готові терпіти гальма та рекламу тільки б побачити ці сексуальні кнопочки з тінями та рожевою окантовкою. Знайома школярка не визнавала нудний віндовий калькулятор і користувалася не нудним на весь екран з якогось сайтику.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Відсутність такої дребедені у вигляді програм. Я не знаю програми-замінника умовному zaycev.net, програми під Вікна для конвертації валют, Google maps існує лише у вигляді &lt;abbr&gt;HTML&lt;/abbr&gt; сторінки. Схоже що звичка писати такі програмки відмирає і в масовій свідомості вони відходять на другий план. І чим далі тим гірше. Замість них роблять сайтики. Наприклад раніше база з іграми ag.ru розповсюджувалася у вигляді програмки (десь таке читав або чув). Якось в мене на &lt;abbr&gt;ЕОМ&lt;/abbr&gt; була програма-карта київського метополітену. Однокласник бродив по Києву оірєнтуючись по карті (не в Web) під Symbian.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Нинішній рівень розвитку web-лайна та висока швидкість доступу до Internet призвели до того що таких сервісів розплодилося як собак нерізаних і в більшості випадків саме вони будуть на перших сторінках пошукової видачі. Наприклад, на запит бухгалтерский калькулятор, бухгалтерский облік пошуковики підсовують всіляке web–лайно без реєстрації та &lt;abbr&gt;SMS&lt;/abbr&gt;, а не православні програми написані на Delphi чи божественному Visual BASIC.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Платність аналогів. Частенько буває так що за більш–менш серʼйозні програми їхні автори хочуть грошей. Наприклад, в Web знайдеться чимало безкоштовних сервісів (але з рекламою) для завантаження відео з YouTube, а от безкоштовних програм я не знаю.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Нажаль мушу визнати що всілякі фігня в &lt;abbr&gt;WWW&lt;/abbr&gt; часто–густо вкрай проста у використанні, нічого не потрібно завантажувати, встановлювати, не треба десять разів тиснути кнопку „далі“ і добре підходить для одноразового використання.&lt;/p&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/3151.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/3151&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Бидловізація WWW</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:2947</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/2947.html' />
    <created>2020-09-18T20:34:01Z</created>
    <issued>2020-09-19T00:10:00</issued>
    <modified>2020-09-25T08:13:51Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='internet' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;article&gt;&lt;p&gt;Web нікому не потрібен і це добре помітно на прикладі мобілок.&lt;/p&gt;&lt;p&gt;Раптово виникла думка що як така Всесвітня Павутина масовому користувачеві не потрібна. Йому потрібні програми. Програми що взаємодіють через Всемережжя і дозволяють спілкуватися між собою, виставляти свої фотки на загальний огляд, ставити так звані лайки, дивитися фільми, порнуху, серіали і Ютуп (телевізор 2.0), смішні картинки, слухати музяку, дрюнькати в відеочаті-рулетці, підглядати за чужим життям в соціалочках і таке інше. Те що багато з цих програм представлені у вигляді нікчемних HTML документів нафаршированих явасценарієм є прикрою випадковістю і значення не має. Я про те що Павутина в своєму так би мовити традиційному вигляді переважно статичних гіпертекстових документів сукупність яких утворює щось на кшталт всесвітньої цифрової бібліотеки малоцікава пересічному — буковок багато, полайкати немає кого, інтерактиву мало. Згадується однокашник для якого Internet (WWW) це Мордокнига, Вконтакті, Instagram, Viber, Tiktok, Tinder, Ютуп і т.д. Насправді він і web-переглядача на розумному телефоні запускає нечасто. Користуючись смартофоном він, за великим рахунком, вилазить зі своїх програм в Павутину тільки за тим чого немає в цих самих програмах (порно онлайн без SMS, як відремонтувати карбʼюратор). Причина з якої він, приходячи з роботи додому, заходить на web site YouTube крапка ком а не запускає програму Ютуп (як він це робить в себе на коммунікаторі) суто історична.&lt;/p&gt;&lt;p&gt;Епоха мобілочок, коли ледь не всі носяться з цими тикалками, показала що web-сторінки (байдуже чи це новомодне SPA чи щось іще) погано підходять на роль програм. З web-сторінками-як-програмами забагато мороки (хоча б тому що потрібно запускати павутинного переглядача і перемикатися між вкладками). І зауважте що, коли мова заходить про мобілочки, то знаходиться не так і багато тих хто варнякає про універсальність сайтиків та про складність написання програм під розумні телефони (як це часто роблять у випадку з нормальними програмами). Пишуть аж бігом. Прикро що явасценаристів з їхнім Хромом та ангулярками пустили в світ мобільних програм.&lt;/p&gt;&lt;p&gt;Спаскудження ідеї гіпертексту і мутація ВП в якусь подобу програмної платформи (на кшталт .NET чи ОС взагалі) почасти є наслідком задоволенням запиту шир. нар. мас. Зелені буковки на чорному фоні, семантична Павутина цікаві купці технарів та всіляким задротам. Якби ВП й нині залишалася такою якою вона була на початку, то крім маргіналів ніхто б туди не потикався.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Post scriptum.&lt;/b&gt; Константин Кадавр говорить на схожу тему. Мільйони web-вузлів майже нікому не цікаві, переважна більшість відвідує жменьку сайтиків чи сидить в своїх загончиках соціальних мереж, Всесвітня павутина не стала (принаймні поки що) кіберпанковою антиутопією або утопією, експансія ЗМІ і т.п. &lt;a href=&quot;https://www.youtube.com/watch?v=4ByGfNnEjDU&quot; title=&quot;Интернет умер (Очевидные вещи #21)&quot; rel=&quot;external&quot; hreflang=&quot;ru&quot;&gt;Интернет умер (Очевидные вещи #21)&lt;/a&gt;&lt;/p&gt;&lt;/article&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/2947.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/2947&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Вебщики на чолі з Microsoft атакують Linux</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:2796</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/2796.html' />
    <issued>2020-08-29T13:44:00</issued>
    <modified>2020-08-29T10:48:20Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='linux' />
    <category term='microsoft' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;a href=&quot;https://opennet.ru/53619-lkml&quot;&gt;Управление через почтовые рассылки как барьер, мешающий приходу молодых разработчиков&lt;/a&gt;&lt;blockquote cite=&quot;https://opennet.ru/53619-lkml&quot;&gt;Сара Новотны (Sarah Novotny), входящая в управляющий совет Linux Foundation от компании Microsoft, подняла вопрос об архаичности ведения процесса разработки ядра Linux. По мнению Сары, использование списка рассылки (LKML, Linux Kernel Mailing List) для координации разработки ядра и отправки патчей отпугивает молодых разработчиков и является барьером, мешающим приходу новых сопровождающих. С увеличением размера ядра и темпа разработки нарастает проблема с нехваткой сопровождающих, способных курировать подсистемы ядра.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/2796.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/2796&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Розбір понять WWW</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:2416</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/2416.html' />
    <issued>2020-08-27T17:22:00</issued>
    <modified>2020-08-27T14:27:28Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='javascript' />
    <category term='programming' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;h2&gt;Місце в Павутині&lt;/h2&gt;&lt;p&gt;Web site. Site — місце, вузол. Web може означати павутину, мережу і &lt;s&gt;ве-ве-ве точка ру&lt;/s&gt; &lt;abbr title=&quot;World Wide Web&quot;&gt;WWW&lt;/abbr&gt;. Таким чином web site — місце в мережі. Власного слова яке б позначало web site в нас немає. Також немає слова яке б позначало цей самий Web. Була думка для позначення WWW писати слово мережа з великої літери, але Мережа це скоріше про &lt;abbr title=&quot;internetwork, inter-network&quot;&gt;Internet&lt;/abbr&gt;. В Wikipedia в статті про &lt;abbr&gt;WWW&lt;/abbr&gt; побачив влучне слово всемере́жжя, але воно теж більше личить Internet (хоча, якщо точніше, то Internet це більше міжмережжя). Проте все це не підходить коли потрібно з оцим всемережжям утворити слово яке б позначало павутинного програміста. Щодо мережевого програміста, то воно може позначати не тільки web-макаку а й цілком нормального спеціаліста. На даний момент вважаю що найкраще використовувати конструкції на зразок web-вузол, web-програміст.&lt;/p&gt;&lt;p&gt;Що ж до визначення поняття, то &lt;q cite=&quot;https://en.wikipedia.org/wiki/Website&quot;&gt;&lt;b&gt;web site&lt;/b&gt; is a collection of web pages and related content that is identified by a common domain name and published on at least one web server.&lt;/q&gt;.&lt;p&gt;&lt;h2&gt;Місце в Павутині як програма&lt;/h2&gt;&lt;p&gt;Хочу звернути увагу на те що web site це не програма хоча багато хто має на увазі саме програму (чи уявляє собі якусь програму), коли говорить про web site. Цікаво що заміна іноземного web site на web-вузол відбиває будь-яке бажання писати поряд з ним слово програма. Розмірковуючи так розумієш що web site як програми не існує.&lt;/p&gt;&lt;h2&gt;Документи як програми. &lt;abbr&gt;RIA&lt;/abbr&gt;, &lt;abbr&gt;SPA&lt;/abbr&gt;, &lt;abbr&gt;DHTML&lt;/abbr&gt;&lt;/h2&gt;&lt;p&gt;Підзабута нині абревіатура &lt;abbr title=&quot;rich interner application&quot;&gt;RIA&lt;/abbr&gt; та модна &lt;abbr title=&quot;single page application&quot;&gt;SPA&lt;/abbr&gt; по суті представляюють собою одне й теж — мімікрію під нормальні програми в середовищі Всесвітньої павутини (web-переглядача). Не знаю що мали на увазі автори (автор) поняття &lt;abbr&gt;RIA&lt;/abbr&gt;, але може так бути що мається на увазі Internet взагалі а не лише &lt;abbr&gt;WWW&lt;/abbr&gt;. Історично &lt;abbr&gt;RIA&lt;/abbr&gt; це більше про Macromedia Flash, Silverlight від Microsoft, Java applets і подібні речі та той час коли народ не божеволів від webʼних технологій, а так звані односторінкові програми є породженням новітнього часу та розвитку web-переглядачів. Незважаючи на це та на те що &lt;abbr&gt;SPA&lt;/abbr&gt; базується на рідних для web-переглядача &lt;abbr&gt;HTML&lt;/abbr&gt;, &lt;abbr&gt;CSS&lt;/abbr&gt; та JavaScript а не на якихось там сторонніх модулях і нібито стоїть дещо окремо, &lt;abbr&gt;SPA&lt;/abbr&gt; це все ж таки один з проявів &lt;abbr&gt;RIA&lt;/abbr&gt;. Односторінковою програмою може називатися навіть &lt;abbr&gt;HTML&lt;/abbr&gt; документ з єдиною кнопкою по натисненню на яку показується напис Hello, world. Головне щоб без перезавантаження. Абревіатура в якій йдеться про сторінку не зовсім точна. Однодокументна програма — ось точніший термін.&lt;/p&gt;&lt;h2&gt;Що таке web-програма?&lt;/h2&gt;&lt;p&gt;Вважаю що слід обмежитися визнеченням з Wikipedia в якому написано що web-програма це програма яка виконується web-сервером. Не можна прирівнювати програмульку вписану в &lt;abbr&gt;HTML&lt;/abbr&gt; файл через тег &lt;code&gt;SCRIPT&lt;/code&gt; що маніпулює &lt;abbr&gt;DOM&lt;/abbr&gt; до web-програми. Цілковитою нісенітницею виглядає визначення web-програми як якоїсь там розподіленої програми між сервером та web-переглядачем.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/2416.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/2416&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>CMS — вершина розвитку павутинного програмування</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:2245</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/2245.html' />
    <created>2020-08-06T20:27:31Z</created>
    <issued>2020-08-06T23:15:00</issued>
    <modified>2020-08-06T20:27:50Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='php' />
    <category term='programming' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;p&gt;Незважаючи на презирливе, зневажливе ставлення певних людей до &lt;abbr title=&quot;система управління публікаціями&quot;&gt;CMS&lt;/abbr&gt; та тих хто під них пише, CMS — це як раз те що треба для павутинного програмування, майже золота куля. CMS’ки вигідні як павутинним програмістам так і замовникам. Для одних CMS пришвидшує та спрощує роботу, для інших дещо зменшує залежність від програмістів надаючи адмінку, плагіни, шаблони і таке інше.&lt;/p&gt;&lt;p&gt;Зізнаюся що я ненавиджу CMSʼки через те що доводиться підлаштовуватися під них, налаштовувати їх, розбиратися в чужих плагінах, боротися з їхніми обмеженнями, але вся правда в тому що CMS це і є обличчя павутинного програмування, це і є саме павутинне програмування. Мало кому зі споживачів послуг павутинних програмістів потрібна якась кривулька написана з нуля і для обслуговування якої довелося б кожного разу шукати макаку, коли є такі напівфабрикати як Wordpress, Drupal, Joomla, Opencart та інші з великою кількістю готових модулів на всі випадки життя які достатньо лише встановити.&lt;/p&gt;&lt;p&gt;Нарешті моє давнішнє обурення засиллям CMS на фрілансерських сайтах та в вакансіях стихло. Я прозрів. Можна сказати що концепція CMS відповдіє духу WWW. CMS це основа яка не лише слугує фундаментом а й надає засоби для вирішення типових (та не дуже) потреб значної частини програмістів та їхніх клієнтів. Замовникам не цікаві якісь там frameworkʼи, оптимізації, говнокод в самих CMS чи їхні обмеження. Все перевішує зручність та можливість швидко підняти website.&lt;/p&gt;&lt;p&gt;Зауважу що на відміну від frameworkʼів CMS зачасту роблять роботу павутинних програмістів менш програмістською. Акцент зміщується на дезіґн, явасценарії і метушню з модулями. Оскільки „усьо вже написано до нас“, все програмування зводиться до правки конфігураційних файлів та написання нескладного коду. Головне добре знати систему.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/2245.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/2245&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Web–макаки не знають як користуватися великими екранами</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:1864</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/1864.html' />
    <created>2020-07-01T04:43:22Z</created>
    <issued>2020-07-01T08:04:00</issued>
    <modified>2021-03-16T07:07:47Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='css' />
    <category term='design' />
    <category term='html' />
    <content type='text/html' mode='escaped'>&lt;p&gt;На маленькому екрані видно більше ніж на великому.&lt;/p&gt;&lt;lj-cut&gt;&lt;br /&gt;&lt;img src=&quot;https://grumpy.website/post/0Tmx9-TaF/M8BAW3S.fit.jpeg&quot;&gt;&lt;br /&gt;&lt;blockquote cite=&quot;https://grumpy.website/post/0Tmx9-TaF&quot;&gt;nikitonsky: Big screen? How about we show you LESS of an image? Less of the content, too. Who are you trying to impress?&lt;/blockquote&gt;&lt;br /&gt;&lt;a href=&quot;https://grumpy.website/post/0Tmx9-TaF&quot;&gt;https://grumpy.website/post/0Tmx9-TaF&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/1864.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/1864&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
  <entry xmlns="http://purl.org/atom/ns#">
    <title mode='escaped'>Чому я ненавиджу web–програмування і що мені в ньому не подобається</title>
    <id>urn:lj:lj.rossia.org:atom1:webhate:1770</id>
    <link rel='alternate' type='text/html' href='http://lj.rossia.org/users/webhate/1770.html' />
    <created>2020-05-30T19:52:29Z</created>
    <issued>2020-05-30T23:19:00</issued>
    <modified>2021-03-16T06:59:46Z</modified>
    <author>
      <name>webhate</name>
    </author>
    <category term='javascript' />
    <category term='www' />
    <content type='text/html' mode='escaped'>&lt;p&gt;&lt;h2&gt;TL;DR&lt;/h2&gt;&lt;p&gt;Якщо коротко, то HTML і CSS створювалися для розмітки і оформлення простих документів а ЯваСценарій це жахлива і по суті єдина мова програмування доступна для «розуміння» броузерам з купою недоліків створена за 10 днів (так навіть в «JavaScript: The Good Parts» написано), яку з усіх боків облизує дуже багато вебщиків які нічого крім JavaScript не бачили, і якщо процес оформлення цього тексту за допомогою HTML і CSS ніяких неприємних відчуттів не викликає, то беручись за створення чогось більш складного (читай, відмінного від статичних текстів) стикаєшся з купою проблем породжених недоліками і спеціалізацією вищеназваних технологій на тексті, на документах. Значна частина так званого web–програмування це зборище хаків тому що якщо тобі потрібно створити щось відмінне від не складного інтерактивного документу, то інакше просто ніяк, тому що, як я вже вище писав, технології WWW призначалися для зовсім іншого. 90% людей зайнятих створенням web–сайтів це погані малокваліфіковані програмісти і цілком можливо що любов до JavaScript є наслідком неосиляторства, вузького кругозору, низького рівня проф. придатності і синдрому каченяти.&lt;/p&gt;&lt;p&gt;Якщо тобі дійсно подобається програмування, я раджу не йти в сайтобудівельники.&lt;/p&gt;&lt;p&gt;Мені прикро це казати, але якби я наймав програмістів, то я б віддавав перевагу людям не замараним сайтобудівництвом і для вебщиків проводив би додаткове тестування.&lt;/p&gt;&lt;lj-cut&gt;&lt;h2&gt;Web для тексту. CSS відстій.&lt;/h2&gt;&lt;p&gt;Наскільки мені відомо WWW задумувалося як середовище гіпертекстових документів (і доволі простих документів мушу зауважити) пов&apos;язаних між собою за допомогою посилань а не як середовище для програм, не як програмна платформа. Це лише документи з домішкою інтерактивності у вигляді скриптової мови JavaScript (це те ж саме що й Microsoft Office з його Visual basic for applications. Кумедно, але гадаю, що можна писати здоровенні програми на VBA в doc файлах і потім розповсюджувати їх майже так само як вебщики свої HTML документи в &lt;a href=&quot;https://en.wikipedia.org/wiki/Electron_%28software_framework%29&quot; target=&quot;_blank&quot;&gt;Electron&lt;/a&gt;. Discord в doc файлі, м–м–м.). І чим далі від концепції документу, чим більша мімікрія під &quot;нормальні&quot; програми, чим складніші макети і оформлення тим мерзотнішим все це web–програмування стає і тим дужче моє роздратування. Про програми (саме про «нормальні» програми для ОС а не web–сторінки для переглядачів WWW) я тут згадав по перше, через популярність так званих &lt;a href=&quot;https://en.wikipedia.org/wiki/Single-page_application&quot; target=&quot;_blank&quot;&gt;SPA&lt;/a&gt; які намагаються бути як програми &lt;small&gt;(віднині буду називати «нормальні» програми просто програмами тому що, як на мене, комбінація з мови для розмітки тексту, CSS і ЯваСценарія це документ з приліпленою збоку мовою програмування)&lt;/small&gt; перетворюючи HTML і CSS в інструмент для побудови елементів графічного інтерфейсу користувача (для чого вони не призначені вкотре вже повторюю); ну і по друге, тому що багато сторінок в WWW знаходяться десь між програмами з знайомими всім елементами GUI, майже голим текстом без форматування і чимось на зразок красивих глянцевих журнальчиків (хоча, мабуть, правильніше було б сказати що на HTML і CSS роблять і те і те). В HTML немає набору, бібліотеки типових (найбільш поширених) компонентів GUI (&lt;a href=&quot;https://uk.wikipedia.org/wiki/%D0%92%D1%96%D0%B4%D0%B6%D0%B5%D1%82&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;віджетів&lt;/a&gt;) а CSS як засіб керування розміщенням елементів сторінки просто жахливий. Якщо тобі потрібно написати програму з GUI для Windows, Mac OS, &lt;a href=&quot;http://en.wikipedia.org/wiki/X_Window_System&quot; rel=&quot;external&quot; target=&quot;_blank&quot;&gt;X window system&lt;/a&gt;, Android, то до твоїх послуг декілька &lt;strong&gt;спеціально для цього призначених&lt;/strong&gt; технологій на зразок GTK+, Qt, FLTK, Cocoa, MFC, WPF, VCL з якими ти не будеш витрачати час на написання хаків і створення з нуля елементарних речей, а якщо ж ти сядеш за своє супер–пупер SPA, то ти опинишся в якійсь кам’яній добі з &lt;s&gt;шматком граніту і кривою гіллякою&lt;/s&gt; чи не єдиним інтерактивним елементом придатним для створення GUI у вигляді теґу &lt;code&gt;button&lt;/code&gt; (призначення багатьох інших теґів суто текстове — створити параграф, вставити картинку, додати список, таблицю і т.п.). Візьмемо, наприклад, &lt;a href=&quot;https://en.wikipedia.org/wiki/Qt_%28software%29&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Qt&lt;/a&gt;. В Qt на програміста чекає 2101 клас і купа компонентів GUI з можливістю їхнього розширення для створення власних а також такі штуки як менеджери компоновки які дозволяються як завгодно і без зайвої мороки розташовувати елементи інтерфейсу (для чого вебщики змушені використовувати CSS). Для створення панелі з меню в Qt достатньо викликати дві функції: &lt;code&gt;fileMenu = menuBar()-&amp;gt;addMenu(…)&lt;/code&gt; або мишкою накидати на форму потрібні елементи. У випадку з сайтобудівництвом ніяких 2101 класів нємає і вебщикам таке тільки сниться (хоча ні, не сниться. 90% з них про існування чогось подібного навіть не здогадуються і для них еталон і те на що всі повинні рівнятися це CSS і черговий модний framework написаний на JavaScript); їм доводиться мучитися, шукати різноманітні способи і писати гору CSS і JavaScript для того щоб створити таку банальну річ як панель меню. І так майже з усім. Потрібні симпатичні віконця в контексті сторінки а не нова вкладка в броузері чи блокуючі модальні alert, prompt, confirm? Але їх немає, тому давай пиши власні вікна і щоб у всіх броузерах працювало і було адаптивним. Хочеш стилізувати теґи &lt;code&gt;radio&lt;/code&gt; і &lt;code&gt;checkbox&lt;/code&gt;? Будь ласка, статті в яких описується 10 хитромудрих способів до яких ти б ніколи сам не додумався. Потрібен ієрархічний список? Ой, і таке теж відсутнє. Таблиця але, не проста а інтерактивна з сортуванням, фільтрацією, моделлю даних і т.п.? Звісно ж такого немає тому що це сраний документ тож таблиця тут це просто таблиця, як в зошиті, як в документі. Але якщо чесно, то середньостатистичний вебщик (з мого досвіду) такий компонент як ієрархічний список, випадаючий список з фільтрацією і т.п. робив би місяць та й WWW не вчора з’явилося тому до наших послуг певна кількість несумісних між собою бібліотек, скриптів, frameworkʼів різної якості і свіжості, які щось роблять добре, щось погано і мода на які міняється, мабуть, кожного року. Вебщикам за великим рахунком доводиться вдовольнятися теґом &lt;code&gt;div&lt;/code&gt; як універсальним будівельним блоком і горою CSS і ЯваСценарію для того щоб виліпити з нього те що потрібно. Як би було добре якби прямо в HTML можна було б надрукувати щось на зразок &lt;code&gt;&lt;pre&gt;&amp;lt;navbar postion=&quot;top&quot; autohide=&quot;3s&quot;&amp;gt;&amp;lt;items&amp;gt;&amp;lt;item&amp;gt;Menu item 1&amp;lt;/item&amp;gt;&amp;lt;/items&amp;gt;&amp;lt;/navbar&amp;gt;&lt;/pre&gt;&lt;/code&gt; або &lt;code&gt;&lt;pre&gt;var fookingAwesomeWindow = new Window({title: &apos;My new window&apos;, content: &apos;awesome form.html&apos;, position: &apos;center&apos;, onLoadFailure: function(){…}})&lt;/pre&gt;&lt;/code&gt; без того щоб це все потребувало 300 кілобайт ЯваСценарію, 1000 рядків CSS і щоб можна було обійтися без 12 вкладених  один в одного блоків div з 40 CSS класами, але ж ні, вбогі броузерні API і спеціалізація на тексті не дадуть цього зробити; зроби сам або візьми он ті скрипти на півмегабайта щоб швидше. В плані написання всіх цих SPA і гламурних дизайнів в мене склалося враження що WWW застиг десь в 2000 році і по суті вся відмінність між тоді і тепер це кількість і хитромудрість хаків і вже готового написаного до тебе і замість тебе коду (jQuery, Vue, Angular, Backbone, Twitter bootstrap, Mootools, Dojo, React, Knockout, Ember і звісно тисячі додатків для jQuery) тому що основа (HTML, CSS) та ж сама тільки накручено навколо всього цього більше. Так от. HTML і CSS це про текст (хоча, як це не дивно для мене, є ті хто стверджують що зв’язка HTML + CSS це ідеальний інструмент побудови GUI) і для того щоб в цьому переконатися потрібно переглянути список теґів і властивостей CSS. Верстка кожного HTML документу це доволі таки особливий приготований по фірмовому рцепету коктейль з хаків які вебщик вивчив за свою кар&apos;єру. Але так не має бути. Не повинно існувати 10 різних способів створення меню, комусь справді подобається читати статті на багато букв про те як створити &lt;a href=&quot;https://raventools.com/blog/create-a-modal-dialog-using-css-and-javascript/&quot; target=&quot;_blank&quot;&gt;модальне діалогове вікно&lt;/a&gt;, &lt;a href=&quot;http://www.456bereastreet.com/archive/201012/how_to_create_a_3-column_layout_with_css/&quot; target=&quot;_blank&quot;&gt;зверстати макет на три колонки&lt;/a&gt;? Я не хочу (і ти теж не хочеш) читати 19 екранів про &lt;a href=&quot;http://css-live.ru/articles-css/ravnomernoe-vyravnivanie-blokov-po-shirine.html&quot; target=&quot;_blank&quot;&gt;рівномірне вирівнювання блоків по ширині&lt;/a&gt;. &lt;a href=&quot;https://www.w3.org/Style/Examples/007/center.en.html&quot; target=&quot;_blank&quot;&gt;Центрування&lt;/a&gt; &lt;a href=&quot;https://medium.com/@AmJustSam/is-that-how-you-center-in-css-672dd21a4d60&quot; target=&quot;_blank&quot;&gt;в CSS&lt;/a&gt; (цілі статті про таку банальну і просту річ як один елемент розташувати в центрі якогось блоку!); &lt;a href=&quot;http://css-live.ru/tricks/krossbrauzernyj-progress-bar.html&quot; target=&quot;_blank&quot;&gt;стаття про progress bar&lt;/a&gt;: 10 екранів пояснення. Пишучи програму останнє над чим я б хотів замислювати це як зробити таку базову річ як індикатор виконання замість роботи над власне самою програмою! Так не має бути. Опис зовнішнього вигляду і розкладка елементів на сторінці не мають нагадувати шаманізм або алхімію. Верстка має здійснюватися в один єдиний спосіб і бути такою щоб можна було верстати мишкою тут же бачити результати і не витрачати час городячи хаки. Створюючи дизайн ти повинен займатися саме дизайном а не вигадувати костилі для того щоб воно виглядало так як задумано.&lt;/p&gt;&lt;h2&gt;jQuery&lt;/h2&gt;&lt;p&gt;Якщо вам хтось скаже що в WWW програмують на ЯваСценарії, не вірте. Тут всі програмують на jQuery. JavaScript в контексті WWW вже давно = jQuery (якщо ти вирішив стати вебщиком і раптом вчиш як працювати з DOM в ЯваСценарії, то не варто, візьмист за вивчення jQuery оскільки на співбесіжах все одно будуть вимагати jQuery і на роботі маловірогідно що знадобиться). Бібліотека створена &lt;a href=&quot;https://johnresig.com/about/&quot; target=&quot;_blank&quot;&gt;John Resig&lt;/a&gt; заборола конкурентів і витіснила ЯваСценарій з HTML документів. Чи багато вебщиків нині скажуть як видалити елемент DOM без jQuery чи, ну гаразд, іншої бібліотеки (&lt;code&gt;елементКонтейнер.removeChild(елементЯкий&lt;wbr /&gt;ПотрібноВидалити)&lt;/code&gt;)? Як видалити вказаний клас? Сеньйори–помідори з ЗП в декілька тисяч доларів які не знають як без jQuery анімувати зміну висоти div&apos;а чи надіслати HTTP запит, теми на форумах в яких у відповідь на питання про те як в ЯваСценарії обійти нащадків елемента моментально пихають код на jQuery це взагалі ознаки часу. Відкрию таємницю: для того щоб влаштуватися на роботу вебщиком і отримувати башлі часто вистачить поверхового знання ЯваСценарію (ще бажано вивчити відповіді на каверзні питання по ЯваСценарію які можуть задати на співбесіді), сяких–таких навичок програмування і, головне, знання jQuery (а ще доведеться навчитися верстати). Навіть якщо в оголошенні про найм ніндзя–вебщика чи рубі–кицьки на останньому–модному–JavaScript–фреймворку&lt;wbr /&gt;–останньої–версії немає нічого про jQuery, то такі знання маються на увазі тому що jQuery це стандарт de facto. Засмучують люди які стверджують що jQuery винен в тому що їхній код перетворюється в лапшу і тому jQuery це кака, всі кидайте jQuery, переходьте на фреймворк який я використовую ось уже третій місяць. Лапшокод що в клієнтських скриптах, що в серверних це взагалі стандарт в сфейрі сайтобудівництва ну і люди, отямтесь! Це не jQuery перетворює ваші скрипти в лапшу. Це ти (так. Саме ти.) не здатен зробити нормально. Фреймворки просто організовують все за вебщиків. Твердження про те що jQuery витіснила ЯваСценарій з інтерактивних HTML документів різного ступеня навороченості не безпідставне і ось чому: величезна частина більшості програм на ЯваСценарії це маніпуляції з деревом об’єктної моделі документу і HTTP запити, а DOM це капець як незручно (не згадуючи про відмінності в реалізації в різних броузерах), отже замінивши прямі виклики методів броузерних API для роботи з DOM на власні зникла і необхідність в великій кількості супутнього коду на JavaScript.&lt;/p&gt;&lt;h2&gt;JavaScript&lt;/h2&gt;&lt;p&gt;ЯваСценарій (і все що з ним пов&apos;язане) має купу &lt;s&gt;недоліків&lt;/s&gt; особливостей при цьому нічого надзвичайного (чи просто хорошого) з себе не представляючи. Не помічати недоліків можна у випадках коли немає з чим порівнювати тому що нічого крім цього ти не знаєш, коли все одно, коли ти обклавшись бібліотеками пишеш черговий скрипт який показує діалогове вікно від Twitter bootstrap, змінює &lt;code&gt;document.title&lt;/code&gt; при прокрутці сторінки і робить інші подібні речі які складають більшу частину роботи більшості сайтобудівельників (в таких випадках дійсно не так вже й важливі якісь там недоліки JavaScript зважаючи на наявність і кількість коду (jQuery і т.п.) який згладжує гострі кути). Ну або в тебе ЯваСценарій головного мозку і на щось інше ти перейдеш тільки коли від JavaScript відмовиться останній бомж навчений web&apos;у якимсоь добрим хіпстером.&lt;/p&gt;&lt;p&gt;Хотів написати багато тексту про стандартну бібліотеку порівнявши те що є в ЯваСценарії з тим що має, наприклад PHP, але потім мені стало ліниво та й подумавши я виявив що мені в повсякденній практиці вбога стандартна бібліотека не так то й заважає. Звісно часом хотілося б більше функцій, але під Node.js я, дякувати Мойрам, не пишу а в броузері відсутність функцій на зразок md5, trim, in_array не критино… але постривай. В ЯваСценарії немає функції для перевірки того чи масив містить вказаний елемент (ну і trim теж немає). Якби можна було для цього використати оператор &lt;b&gt;in&lt;/b&gt; було б чудово, так елегантно. Але ні, &lt;code&gt;in&lt;/code&gt; не годиться і для &lt;code&gt;33 in [1, 33]&lt;/code&gt; він поверне false а у випадку з &lt;code&gt;1 in [1, 33]&lt;/code&gt; true (вгадай чому). Що ж робити? Писати власну функцію для такої тривіальної штуки? А може… так, дійсно, купа бібліотек зі своїми функціями для перевірки того чи містить масив вказаний елемент. В jQuery є функція яка хоч і називається inArray, але &lt;code&gt;if(jQuery.inArray(1, [1,33]))&lt;/code&gt; це помилка тому що jQuery.inArray повертає -1 якщо елемент не знайдено і індекс елементу якщо знайдено, тож якщо шуканий елемент це перший елемент масиву jQuery.inArray поверне індекс 0, а 0 прирівнюється до false. Що потрібно робити так це перевіряти чи значення яке повертає jQuery.inArray більше або дорівнює 0. Хм. Може вже таку функцію додали? Так, додали… в 2012 році (в 2012 році!) в Google Chrome з&apos;явилася повна підтримка indexOf для масивів. Тільки називається вона indexOf і працює так само як jQuery.indexOf. Дуже зручно. ЯваСценарій має мінімалістичну стандартну бібліотеку відсутні і затребовані функції з якої заміняються скопійованими скриптами знайденими на просторах Мережі, бібліотеками і пакетами з репозиторіїв для ЯваСценарію. Показова історія з пакетом &lt;a href=&quot;https://github.com/stevemao/left-pad/blob/master/index.js&quot; target=&quot;_blank&quot;&gt;left-pad&lt;/a&gt; за авторством Azer Koçulu який в 2016 році видалив свої модулі з NPM і зіпсував життя всім вебщикам тому що як виявилося Left-pad виступав як залежність для величезної кількості проектів. На той час щомісяця цей пакет завантажували близько 2 486 696 разів. А якщо тобі раптом потрібно буде з&apos;ясувати чи містить якась змінна масив, то є пакет &lt;a href=&quot;https://www.npmjs.com/package/isarray&quot; target=&quot;_blank&quot;&gt;isArray&lt;/a&gt; (35 001 265 завантажень за останній місяць) використавши який ти без зайвої мороки зможеш дізнатися масив чи ні. На тему визначення масив, не масив можеш почитати &lt;a href=&quot;http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/&quot; target=&quot;_blank&quot;&gt;статтю&lt;/a&gt; (зайвим не буде), &lt;a href=&quot;https://stackoverflow.com/questions/767486/how-do-you-check-if-a-variable-is-an-array-in-javascript&quot; target=&quot;_blank&quot;&gt;обговорення&lt;/a&gt; на stackoverflow.com, скористатися функцією &lt;a href=&quot;http://api.jquery.com/jquery.isarray/&quot; target=&quot;_blank&quot;&gt;jQuery.isArray&lt;/a&gt; (оскільки воно й так, скоріш за все, є на сайті над яким ти працюєш) ну або &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray&quot;&gt;&quot;&amp;gt;Array.isArray&lt;/a&gt; підтримка якої, якщо вірити caniuse.com, в Mozilla Firefox з’явилася лише в 2013 році. Мова програмування яка, згідно відповідної статті на Wikipedia, з’явилася 1995 року, тобто 22 роки тому (зараз 2017), обзавелася рідною функцією isArray 4 роки тому. Хіба це не показник продуманості, зрілості і зручності? Всі ті хто наярює на JavaScript мабуть все життя мріяли написати щось на зразок (код з книжки «JavaScript: The Good Parts», дата видання May 2, 2008, автор Douglas Crockford)&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
var is_array = function (value) {
  return value &amp;amp;&amp;amp;
  typeof value === &apos;object&apos; &amp;amp;&amp;amp;
  typeof value.length === &apos;number&apos; &amp;amp;&amp;amp;
  typeof value.splice === &apos;function&apos; &amp;amp;&amp;amp;
  !(value.propertyIsEnumerable(&apos;length&apos;));
};
&lt;/code&gt;
&lt;/pre&gt;і тягати за собою запихуючи у всі скрипти (разом з самописними inArray і trim). Тепер я бачу за що JavaScript так люблять його адепти.&lt;p&gt;Можна й далі продовжувати, але ліниво, багато букв і потрібно надрукувати ще немало. Зроблю такий собі підсумок привівши цитату з божественної статті &lt;a href=&quot;https://habrahabr.ru/post/215777/&quot; target=&quot;_blank&quot;&gt;«Javascript: фрактал отсоса»&lt;/a&gt;&lt;/p&gt;&lt;blockquote cite=&quot;https://habrahabr.ru/post/215777/&quot;&gt;&lt;div&gt;К самому языку докопаться к слову почти негде — настолько мала его доля во всем стэке технологий. Тот же DOM отдан на откуп браузерами, весь ввод-вывод отдан библиотекам, модули и человеческая поддержка ООП реализуется ими же. И куда ни глянь, в какую область применения не кинь взгляд, тут же откуда слышится шепоток восторженного JS-боя, о том, что и для этого у них есть библиотека. Когда библиотеки используются для того, чтобы использовать какой-то нестандартный или специализированный функционал — это нормально, когда библиотеки используются для расширения языка общего назначения, это тоже нормально — Boost для С++ отличный пример(если не брать в расчет его монструозность), а вот когда библиотеки используются для узкоспециализированного языка, причем не расширяя его функционал, а просто скрывая его недостатки, то это заставляет задуматься.&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;Ех. Прекрасна стаття. Від душі. Але до справи. Мені можна було б і не друкувати весь цей текст, але хочеться додати і свої п’ять копійок і я вважаю що &lt;b&gt;потрібно більше критики сайтобудування і ЯваСценарію&lt;/b&gt; бо всі наче подуріли з цим своїм JavaScript. Перейду до іншої теми.&lt;/p&gt;&lt;h3&gt;ООП в JavaScript і прототипи&lt;/h3&gt;&lt;p&gt;ООП в JavaScript ніби то й є і ніби то й немає. В моєму бурситеті все що мені потрібно було розказати про ООП це пару речень про &lt;b&gt;поліморфізм&lt;/b&gt;, &lt;b&gt;наслідування&lt;/b&gt;, &lt;b&gt;інкапсуляцію&lt;/b&gt; і далі цього я навіть не замислювався щось вивчати, але як виявилося стаття на Wikipedia містить більше інформації ніж я знаю і ніж мені зараз хочеться опрацьовувати. Особисто для мене питання ОО ЯваСценарію залишається відкритим. В будь–якому разі ЯваСценарій має об&apos;єкти.&lt;/p&gt;&lt;p&gt;Хоча ЯваСценарій і не має поняття класу, але чомусь я часто зустрічаю його в коді скриптів (і рідко коли щось на кшталт protoObject, rootObject, rootProto). Мабуть програмісти так прониклися прототипами і ідеєю безкласовості що скрізь пишуть class і ключове слово class в ECMAScript 6 теж через це там з&apos;явилося (тому що прототипи це зручно!). Якби там не було в JavaScript немає специфікаторів доступу і всі функції та змінні в об&apos;єкті доступні для зовнішнього коду (що вже насторожує). Замість специфікаторів доступу пропонується використовувати всілякі хитрощі. В тому ж PHP є спеціальні ключові слова і все що потрібно це надрукувати щось на зразок &lt;code&gt;private myFuntcion&lt;/code&gt;. В JavaScript &lt;a href=&quot;http://javascript.crockford.com/private.html&quot; target=&quot;_blank&quot; lang=&quot;en&quot; title=&quot;Private Members in JavaScript&quot;&gt;пропонують&lt;/a&gt; створити змінну в конструкторі використавши ключове слово var (змінна не привласнюється властивості породженого функцією об&apos;єкту), але в цьому випадку функції викликані в контексті породженого об’єкту не мають доступу до таких приватних даних і тому потрібно створити ще одну… далі описувати не буду, можеш почитати &lt;a href=&quot;https://stackoverflow.com/questions/55611/javascript-private-methods&quot; target=&quot;_blank&quot; lang=&quot;en&quot; title=&quot;JavaScript private methods&quot;&gt;обговорення&lt;/a&gt; на цю тему.&lt;/p&gt;&lt;p&gt;Наслідування, чи то пак успадковування. Воно тут теж через прототипи. Як це відбувається в інших мовах програмування? Дуже просто — &lt;code&gt;class B extends A&lt;/code&gt;. А як це відбувається в ЯваСценарії? Ну по перше, є більш ніж один спосіб це зробити і по друге, всі вони мають певні особливості. Можна писати &lt;b&gt;функції–конструктори&lt;/b&gt; і буде щось таке:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
function Descendant(name) {
	Forebear.call(this, name);
	…
}
Descendant.prototype = new Forebear();
Descendant.prototype.constructor = Descendant;
&lt;/code&gt;
&lt;/pre&gt;&lt;p&gt;Правда зручно? Можна зробити ще краще. Автори «Pro JavaScript Design Patterns» вводять функцію extend для того щоб можна була друкувати extend(Descendant, Forebear):&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
function extend(subClass, superClass) {
	var F = function() {};
	F.prototype = superClass.prototype;
	subClass.prototype = new F();
	subClass.prototype.constructor = subClass;
}
&lt;/code&gt;
&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;потім вдосконалюють її додавши атрибут superclass:&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
function extend(subClass, superClass) {
	var F = function() {};
	F.prototype = superClass.prototype;
	subClass.prototype = new F();
	subClass.prototype.constructor = subClass;
	subClass.superclass = superClass.prototype;

	if(superClass.prototype.constructor == Object.prototype.constructor) {
		superClass.prototype.constructor = superClass;
	}
}
&lt;/code&gt;
&lt;/pre&gt;&lt;p&gt;О так. Покажи мені своє ООП. А можна не писати функції–конструктори а просто вручну створювати об’єкти і складати на їх основі інші об’єкти.&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
var Person = {
	name: &apos;default name&apos;,
	getName: function() {…}
}
&lt;/code&gt;
&lt;/pre&gt;&lt;p&gt;Атори вищезгаданої книжки вводять функцію &lt;b&gt;clone&lt;/b&gt; для копіювання обʼєктів:&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
function clone(object) {
	function F() {}
	F.prototype = object;
	return new F;
}
&lt;/code&gt;
&lt;/pre&gt;&lt;p&gt;І це ще не все. В «Object-oriented JavaScript» від Stoyan Stefanov розділ про наслідування містить 16 підрозділів. А в розділі Encapsulation and Information Hiding в «Pro JavaScript design patterns» (Ross Harmes and Dustin Diaz) є такі підрозділи як Private Methods Using a Naming Convention і Drawbacks to Using Encapsulation. З такими танцями в ОО стилі, мабуть, можна писати на чому завгодно. Або, можливо, ЯваСценарій і реалізує справжнє ООП, або ж мови на зразок C#, C++ це розвиток ООП. Не знаю (хех, від лайнокодера іншим лайнокодерам). В будь–якому випадку ну його такі ментальні перегрузи і стільки зусиль для реалізації того що в інших місцях є сходу і моя неврастенія не дає мені продовжувати (а читати літературу про ООП це буде твоїм домашнім завданням) і тому ще декілька абзаців і закінчу так як є.&lt;/p&gt;&lt;h3&gt;Спаскуджування WWW&lt;/h3&gt;&lt;p&gt;Ставши вебщиком ти здійсниш гріхопадіння, наблизиш кінець світу і будеш потворствувати Дияволу беручи участь в створенні перевантажених скриптами і CSS&apos;ом HTML документів завантаження і обробка яких твоїм броузером додає до рахунку за електроенергію 20% (а в глобальному масштабі це екологічна катастрофа). Збільшити розмір сторінки єдина функція якої це прийняти від користувача номер телефону і відправити його програмі на сервері ледь не до півтора мегабайта? Чом би й ні. Адже не можна просто відцентрувати тег input і додати пояснення що вимагається. Потрібно ще тисячі рядків CSS і JavaScript коду (і обовʼязково jQuery) для того щоб зверху сторінки була красива панелька ледь не в три пальці товщиною щоб величезна зелена кнопка, щоб введені користувачем числа красиво форматувалися (дуже, дуже потрібна функція), щоб був якийсь не такий, особливий шрифт і щоб мені довелося декілька хвилин сидіти і перезавантажувати сторінку (бо в кого зараз низька швидкість доступу до Інтернет? Правильно, ні в кого? Яке ще погане 3G? Що таке 2G?) сподівючись що цього разу всі потрібні файли таки завантажаться з усіх цих CDN, всі скрипти нарешті запрацюють і я зможу переслати гроші. «Ходячи» по сайтах мені не потрібні всі ці свистопердячі красивості які функціонують за рахунок сотень і тисяч рядків CSS і JavaScript, сірий шрифт який зливається з фоном, SPA і т.п. Я б зрадістю відключив би JavaScript, завантаження шрифтів але проблема в тому що всім на…ть на якусь там достпуність і частень виходить так що навіть сайт з трьома сторінками і одним посиланням на завантаження нічого не покаже бо в тебе відклюено клятий JavaScript. Середовище з технологіями (HTML, CSS) які доступні ледь не на калькуляторі перетворюється на щось таке чим без роздратування можна користуватися тільки володіючи ЕОМ з декількома гігабайтами оперативки і процом пошвидше.&lt;/p&gt;&lt;p&gt;І цей рак розповзається і за межі WWW. Будь обачним! Вебщики пакують свої скрипти разом з HTML в огризки Хрома і оргазмують розповсюджучи це під виглядом нормальних програм. Завжди мріяв про програми які в оперативці займають сотні мегабайт, виглядають як сайти, не враховують системні налаштування теми оформлення і шрифтів (принаймні це справедливо для середовища дистрибутивів Linux) і нормально користуватися якими можна виключно мишкою. І ледь не забув згадати про те що оскільки це броузер, то воно має неприємну особливість спорадично ні з того, ні з сього жерти ЦП (особливо це стосується дистрибутивів Linux).&lt;/p&gt;&lt;p&gt;От і все. Хотілося написати більше і краще, але як вийшло. Сподіваюся що напишу ще щось таке. Тримайся подалі від JavaScript і Node.js, не ставай вебщиком.&lt;/p&gt;&lt;p&gt;Висловлюю подяку &lt;a href=&quot;https://www.liveedu.tv/&quot; target=&quot;_blank&quot; title=&quot;Master Technical Job Skills with Live Learning Platform - LiveEdu.tv&quot;&gt;livecoding.tv&lt;/a&gt;. Закликаю заходити на тамтешні стріми і траллірувати вебщиків питаннями про багатозадачність, асинхронність, класи і прототипи, чим __proto__ відрізняється від prototype чи як щось зробити без jQuery.&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/webhate/1770.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/webhate/1770&quot; border=0 width=26 height=17  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</content>
  </entry>
</feed>
