9 061

Re: Тема для розмов

fed_lviv написав:

Політ "нептунчика"  :)

Робота пілота, який летить вслід за ракетою вражає...

9 062 Востаннє редагувалося 221VOLT (07.12.2019 02:39:10)

Re: Тема для розмов

FakiNyan написав:

після знайомства з erlang мій код на js та php (процедурно-декларативний, без ооп)
став лаконічнішим та більше/легше придатним для читання/розуміння

наведіть приклад, будь ласка
p.s. бажано на js

упс.. зараз Факі аргументовано розкритикує і заплює js-лайнокод Тараса *SORRY*

"обережно, в коментах до коду зрідка можуть зустрічатись росіянські букви :D"

https://i.imgur.com/p7iQQ0S.png
https://i.imgur.com/WFYRz5K.png
https://i.imgur.com/zwlCikQ.png
https://i.imgur.com/iwR17uB.png
https://i.imgur.com/Kx9Am1t.png
https://i.imgur.com/dOielXh.png

останній скрин ясно показує, як сильно в js не вистачає паттерн матчинга
(кому не є очевидним -- напишіть з нуля транслітерацію з гнучкими налаштуваннями,
з кирилиці в латиницю та навпаки, з частковим чи повним реверсом),
та чому дизайн сішного синтаксису -- прорив для 1972 року та відстій для 2020 року  :(

9 063

Re: Тема для розмов

напишіть з нуля транслітерацію з гнучкими налаштуваннями

зробіть тз по цьому, бо я хз, шо то є "гнучкі налаштування"
RegEx'и в js є
а коли той код був писаний? бо я не бачу сенсу змішувати var'и з let'ами

Подякували: leofun011

9 064

Re: Тема для розмов

і чому в коментах кацапська, ви кацап?

Подякували: leofun01, dot2

9 065

Re: Тема для розмов

А чому ТРусики в крові спочатку називав всіх вебмакаками а тепер прославяє JavaScript і верстає сайти?

Подякували: 221VOLT, Chemist-i, flatliner3

9 066

Re: Тема для розмов

javascriptIsLife написав:

А чому ТРусики в крові спочатку називав всіх вебмакаками а тепер прославяє JavaScript і верстає сайти?

тому що люди змінюються, і я не прославляю js

Подякували: leofun011

9 067 Востаннє редагувалося 221VOLT (07.12.2019 13:59:39)

Re: Тема для розмов

FakiNyan написав:

напишіть з нуля транслітерацію з гнучкими налаштуваннями

зробіть тз по цьому, бо я хз, шо то є "гнучкі налаштування"
RegEx'и в js є
а коли той код був писаний? бо я не бачу сенсу змішувати var'и з let'ами

гнучкі -- то коли ви окремі букви, які по різноманітних стандартах транслітерації-транслітеризації
перетворюються по-різному, виносите окремо в налаштування,
а не намертво прибиваєте цвяхами 30-кою в код лише один стандарт))

"обережно, російські букви на тому сайті"

https://proonlinetools.com/tools/translit/
оце результат моєї роботи;

змішування var та let не робить цей код неробочим, правильно?
отже, немає проблем))

в хаскелі історично був і є лише let,
в js історично був лише var, зараз додали let та (непотрібний) const,
я ще поки не звик до того, що js розпочав косити під хаскель :)

в erlang взагалі ніяких var чи let немає,
і то є неймовірно файно -- менше зайвого непотребу треба писати


FakiNyan написав:

і чому в коментах кацапська, ви кацап?

Прихований текст

у вас пам'ять золотої рибки,
обнуляється що-три-секунди?))
я наче позавчора писав:
все життя живу у Львові, розмовляю лише українською, російською не вмію і не розмовляю)
скільки разів вам повторити, щоб ви нарешті запам'ятали?))

висловлюю надію, що ви невдовзі перестанете хворіти цією параноєю --
коли від кожної побаченої російської букви
вам ввижаються москалі за кожним кущем, що прийшли по вашу душу))


ви зі своїми тараканами на тему російської не по тій адресі звертаєтесь,
я ж не психолог, глюки в чужих головах не лікую )

я простий програміст, замовник хоче російською -- має російською,
питання до замовника сервісу)))


у вас в підписі пише
"Говоріть українською! Живіть українською! Відчувайте українською!"
при цьому ви так часто пишете про москалів та кацапську,
що виникає запитання -- якщо ви живете кацапською
(постійно лише про неї думаєте та пишете),
то чи не москалик ви часом?))
замаскований шпійон московії на форумі українських програмістів, диверсію тут готуєте?))


javascriptIsLife написав:

А чому ТРусики в крові спочатку називав всіх вебмакаками а тепер прославяє JavaScript і верстає сайти?

Прихований текст

зрадив ідею за бабло!!  :D  :D  :D


VTrim написав:

Што нє гаварітє, но ета уж слішкам!!!1

Прихований текст

десь в Києві один mr. koala
з цього жарту ржав-сміявся-й-задихнувся
і всьо -- вісім трупів, два -- насмерть!
і це все ви винуваті  :D (по версії mr. koala)

Подякували: 0xDADA11C71

9 068

Re: Тема для розмов

Та трусік латентний москаль, можна провести паралель з ярими противниками ЛГБТ. Хоча я не знаю наскільки це доцільно, оскільки він і є носієм сього культу.

Подякували: 221VOLT1

9 069

Re: Тема для розмов

гнучкі -- то коли ви окремі букви, які по різноманітних стандартах транслітерації-транслітеризації
перетворюються по-різному, виносите окремо в налаштування,

наведіть приклад, чи шо

9 070

Re: Тема для розмов

FakiNyan написав:
гнучкі -- то коли ви окремі букви, які по різноманітних стандартах транслітерації-транслітеризації
перетворюються по-різному, виносите окремо в налаштування,

наведіть приклад, чи шо

https://replace.org.ua/post/132601/#p132601
будь-ласка, перечитайте уважно отриману відповідь на своє запитання,
замість ігнорувати відповідь та повторяти запитання знову та знову

9 071

Re: Тема для розмов

221VOLT написав:
FakiNyan написав:
гнучкі -- то коли ви окремі букви, які по різноманітних стандартах транслітерації-транслітеризації
перетворюються по-різному, виносите окремо в налаштування,

наведіть приклад, чи шо

https://replace.org.ua/post/132601/#p132601
будь-ласка, перечитайте уважно отриману відповідь на своє запитання,
замість ігнорувати відповідь та повторяти запитання знову та знову

тобто, потім ми можемо вказати певний стандарт транслітерації, і будуть використовуватись відповідні літери зі списку? чи шо?

9 072 Востаннє редагувалося 221VOLT (07.12.2019 18:29:53)

Re: Тема для розмов

FakiNyan написав:

тобто, потім ми можемо вказати певний стандарт транслітерації, і будуть використовуватись відповідні літери зі списку? чи шо?

ви написаний мною сервіс на сайті уважно розглянули?

там тих стандартів стільки, що простіше,
і зручніше для користувача,
зробити налаштування-вибір для окремих букв, що і зроблено

для прикладу:
буква "Щ" має наступні допустимі значення: "Sch", "Shch", "Shh" і ще декілька, уже практично не вживаних, тому їх у налаштування даної букви для вибору я вирішив не писати;
буква "Я" : "Ya", "Ia", "Ja";
буква "Ж" : "Zh", "J";

зауважу -- потрібно не лише з кирилиці в латиницю,
а і з латиниці в кирилицю,
і ще і реверс:
якщо в повідомленні є слова на латиниці -- гонимо їх в кирилицю,
якщо є слова на кирилиці -- гонимо їх в латиницю

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

оце власне момент, чому мені js не подобається--
тут треба морочитись з зайвим непотрібним (у хороших сучасних мовах) кодом,
оцим застарілим сішним синтаксисом...

наступний раз отаке писатиму на Elm, на паттерн матчингу

"ще трішки фукань на js"

називають js популярною мовою,
при цьому забуваючи, що на бекенд є величезний асортимент мов "до кольОру-до вибОру",
а на фронт -- тупо "вибір без вибору" -- один js ака "село і коні", і все

уггу, умільці зробили тайпскрипт та elm (ще роблять wasm),
але ж це все браузером напряму не підтримується і не вміє самостійно в DOM (так, wasm також не вміє)

"фуууу"

немає неприємнішого лайна, ніж те, яке "так історично склалось",
вибору "без вибору", і про яке говорять "воно найкраще, бо найпопулярніше" (( фу

9 073 Востаннє редагувалося P.Y. (07.12.2019 19:08:05)

Re: Тема для розмов

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

Мисліть функціональніше:
1) Розбиваєте слово на окремі літери/комбінації літер з допомогою регулярного виразу.
2) Перебираєте отриманий список літер, роблячи заміни з допомогою асоціативного масиву.
3) Збираєте результат у рядок.

Якщо потрібні гнучкі налаштування, регулярку й асоціативний масив замін генеруєте динамічно в залежності від налаштувань.
Вірніше, регулярку в загальному випадку простіше згенерувати з масиву замін (який може бути константою чи генеруватись динамічно), ніж писати руками.

Подякували: 221VOLT, leofun012

9 074

Re: Тема для розмов

Десь приблизно так:

мій APL-транслітератор, написаний на NodeJS
rem='';/*
@node "%~f0" %*
@goto :eof
  :mode=javascript:

:: convert APL characters <=> multigraphs
:: `a `w `e `i `o `y `u `s `d `g `h `j `l `z `x `c `v `b `n  <=> chars placed on keys
::  ⍺  ⍵  ∊  ⍳  ○  ↑  ↓  ⌈  ⌊  ∇  ∆  ∘  ⎕  ⊂  ⊃  ∩  ∪  ⊥  ⊤
:: `-> `<- `/\ `\/ `>< `* `<> `@ `== `# `/= `<= `>= `- `%    <=> chars looking similar
::  →   ←   ∧   ∨   ×   ×  ⋄   ∘  ≡   ≢  ≠   ≤   ≥   ¯  ÷
:: `MUL `DIV  `QUAD `IDX `INF                                <=> names
::  ×    ÷     ⎕     ⍳    ∞
:: `` ``O ``j ``* ``> ``~                                    <=> diaeresis
::  ¨   ⍥   ⍤   ⍣   ⍩   ⍨
:: `[] `['] `[=]  `]  `[/] `[<>]                             <=> quad
::  ⎕    ⍞    ⌸    ⌷    ⍁    ⌺
:: `() `(*) `(-) `(|) `(\)                                   <=> circle
::   ○   ⍟    ⊖    ⌽    ⍉
:: `-/ `-\ `-,                                               <=> hor. strike
::   ⌿   ⍀   ⍪
:: `~0 `~|                                                   <=> tilde
::   ⍬   ⍭
:: `|g `|h `|<-                                              <=> ver. strike
::   ⍒   ⍋   ⍅
:: `_a `_w                                                   <=> underline
::   ⍶   ⍹
:: `_A_B_C_Z_ `_X_ `_Y_Y  Y`_Y_                              <=> underlined letters
::  ⒶⒷⒸⓏ   Ⓧ   ⓎY   YⓎ

*/
const charmap={
    '⍺':['a'],
    '⍶':['_a'],
    '⍵':['w'],
    '⍹':['_w'],
    '∊':['e'],
    '⍷':['_e'],
    '⍴':['r'],
    '∼':['t', '~', 'NOT'],
    '⍨':['`~'],
    '⍭':['~|', '|~', '|t'],
    '↑':['y', 'TAKE'],
    '⍏':['-y'],
    '↓':['u', 'DROP'],
    '⍖':['-u'],
    '⍳':['i', 'INDEX'],
    '⍸':['_i'],
    '○':['o', '()', 'CIRC'],
    '⍥':['`o', '(")', '`()', '(``)'],
    '⋆':['p'],
    '⍣':['`*', '`p'],
    '⍟':['(*)', '(p)'],
    '⌈':['s', 'MAX', 'CEIL'],
    '⌊':['d', 'MIN', 'FLOOR'],
    '∇':['g', 'DEL', 'FN'],
    '⍫':['~g'],
    '⍢':['`g'],
    '⍒':['|g', 'DESC'],
    '∆':['h', 'DELTA'],
    '⍙':['_h'],
    '⍋':['|h', 'ASC'],
    '∘':['j', '@', 'JOT'], 
    '⍤':['`j', '`@', 'RANK'],
    '⎕':['l', '[]', 'QUAD'],
    '⍞':["[']"],
    '⌷':[']', 'SQUISH'],
    '⍠':['[:]'],
    '⌸':['[=]'],
    '⍁':['[/]'],
    '⍂':['[\\]'],
    '⌺':['[<>]'],
    '⍰':['[?]'],
    '⌹':['[%]'],
    '⌻':['[j]', '[@]'],
    '⌼':['[o]', '[()]'],
    '⍯':['[|=]', '[!=]', '[/=]'],
    '⍃':['[<]'],
    '⍄':['[>]'],
    '⍌':['[V]'],
    '⍓':['[^]'],
    '⍇':['[<-]'],
    '⍈':['[->]'],
    '⍐':['[y]'],
    '⍗':['[u]'],
    '⍔':['[g]'],
    '⍍':['[h]'],
    '⊂':['z'],
    '⊆':['_z'],
    '⊃':['x'],
    '⊇':['_x'],
    '∩':['c'],
    '⍝':['@c', 'REM', 'BULB'],
    '⋔':['|c'],
    '∪':['v'],
    '⍦':['|v'],
    '⊥':['b', '_|_', '|_', '_|', '_L'],
    '⍎':['@b', '@_L', 'EVAL', 'EXEC'],
    '⍊':['_b'],
    '⊤':['T', 'n'],
    '⍕':['@T', '@n', 'FMT', 'FORMAT'],
    '⍡':['`T', '`n'],
    '⍑':['-T', '-n', '_n', '_T'],
    '⊢':['|-'],
    '⊣':['-|'],
    '¯':['-'],
    '∞':['INF', '8'],
    '⍬':['~0'],
    '⌶':['I', 'IBEAM'],
    '⍩':['`>', '>"'],
    '«':['<<'],
    '»':['>>'],
    '≤':['<='],
    '≥':['>='],
    '≠':['|=', '!=', '/='],
    '≡':['=='],
    '≢':['#', '|==', '!=='],
    '⍀':['-\\'],
    '⌿':['-/'],
    '×':['*', '><', 'MUL', 'X', '+'],
    '÷':['/', '%', 'DIV'],
    '←':['<-'],
    '⍅':['<+', '|<-', '<|-'],
    '→':['->', 'GOTO'],
    '⍆':['+>', '|->', '-|>'],
    '¨':['"', '`', '..', ':'],
    '∵':['`.'],
    '⌽':['(|)'],
    '⍉':['(\\)'],
    '⊖':['(-)'],
    '∨':['OR',   '\\/',  'V'],
    '⍱':['NOR', '~\\/', '~V'],
    '∧':['AND',  '/\\',  '^'],
    '⍲':['NAND','~/\\', '~^'],
    '√':['ROOT'],
    'π':['PI'],
    'λ':['LAMBDA', 'LAMDA'],
    'χ':['AXIS', 'CHI'],
    '⍮':['_;'],
    '⍛':['_j'],
    '⍜':['_o'],
    '⍪':['-,'],
    '⍚':['_<>'],
    '⋄':['<>', ';'],
    '⊙':['(.)'],
    '⌾':['(j)', '(@)'],
    //і т.д. ......
    '`':[' ']
    };
    // Ⓐ...Ⓩ:
    for(i='A', j='Ⓐ'; i<='Z'; 
            i=String.fromCharCode(i.charCodeAt(0)+1),
            j=String.fromCharCode(j.charCodeAt(0)+1))
        charmap[j]=['_'+i+'_'];

//tranToAPL={'w':'⍵', '∘':'j', '∘':'@'...}
tranToAPL={};
tranlist=[];
for(i in charmap)
    {
    transl=charmap[i];
    for(j in transl)
        {
        tranToAPL['`'+transl[j]]=i;
        tranlist.push(transl[j]);
        }
    }
// згенерувати регекс для пошуку:
//tranlist - повний список усіх позначень
//відсортувати, щоб довші були першими:
tranlist.sort(function(a,b){return b.length-a.length});
//console.log(tranlist);
//заескейпити спецсимволи ().*?[]\ 
reToAPL='`(';
for(i in tranlist)
    reToAPL+=tranlist[i].replace(/([\\\[\]\)\(\.\*\?\|\{\}\+])/g, '\\$1')+
    (i<tranlist.length-1?'|':')|.');
//reToAPL=/`(LONGEST|MID|[1chr])|./ :
//console.log(reToAPL);
reToAPL=new RegExp(reToAPL, 'g');

tranFromAPL={};
for(i in charmap)
    tranFromAPL[i]=charmap[i][0];

function pseudo2apl(s)
    {
    //розгорнути підкреслені групи літер `_A_B_C_=>`_A_`_B_`_C_.....
    while(/`_[A-Z]_[A-Z]_/ .test(s))
        s=s.replace(/`_([A-Z])_([A-Z])_/g, '`_$1_`_$2_');
    //знайти й замінити: 
    s=s.match(reToAPL);
    //console.log(s);
    res=''
    for(i in s)
        if(repr=tranToAPL[s[i]])
            res+=repr;
        else res+=s[i];
    return res;
    }
function apl2pseudo(s)
    {
    res='';
    for(i in s)
        if(tr=charmap[s[i]])
            res+='`'+tr[0];
        else    res+=s[i];
    s=res
    //`_A_`_B_ => `_A_B_....
    while(/`(_[A-Z])+_`_[A-Z]_/ .test(s))
        s=s.replace(/`((_[A-Z])+)_`_([A-Z])_/g, '`$1_$3_');
    return s;
    }
    
/* test 
console.log(t=apl2pseudo('∘.×⍨⍳10 ⍝ ``Pythagorean table"'));
console.log(pseudo2apl(t));
console.log(pseudo2apl('`@c 2`MUL2`!=5'));
/* end test */

var toTranslit=false;
process.argv.slice(2).forEach(function(arg)
    {
    // -t --to-translit
    if (arg==='-t'|arg==='--to-translit')
        toTranslit=true;
    // -u --to-unicode
    else if (arg==='-u'|arg==='--to-unicode')
        toTranslit=false;
    });
translate=toTranslit? apl2pseudo: pseudo2apl;

processLine=function(s)
    {
    process.stdout.write(translate(s)+'\n');
    }

process.stdin.resume();
process.stdin.setEncoding('utf8');

var lingeringLine = "";

process.stdin.on('data', function(chunk) 
    {
    lines = chunk.split("\n");
    
    lines[0] = lingeringLine + lines[0];
    lingeringLine = lines.pop();
    
    lines.forEach(processLine);
    });

process.stdin.on('end', function() 
    {
    if(lingeringLine!=='')
        processLine(lingeringLine);
    });

// I/O.....
Подякували: 0xDADA11C7, /KIT\, 221VOLT, dot4

9 075

Re: Тема для розмов

дюже складно

9 076

Re: Тема для розмов

FakiNyan написав:

дюже складно

Так, звісно, phpшне strtr тут було б ідеальним варіантом (до речі, саме той випадок, коли всі мають вклонитися перед могуттю php). Те, що я роблю, фактично, є реалізацією аналога strtr, плюс деякі додаткові можливості — усього декілька невеличких функцій. Більша ж частина коду — самі масиви, що описують транслітерацію.

Подякували: 221VOLT, leofun01, dot3

9 077 Востаннє редагувалося 221VOLT (07.12.2019 22:46:46)

Re: Тема для розмов

2 mr. P.Y. :
за вийнятком регулярок, я саме так і зробив

прикол в тому, що при наявності паттерн матчингу
регулярки є непотрібними
(виключення -- якісь дуже складні ситуації)

+ регулярка = додатковий спосіб вистрілити собі в ногу
а браузери сьогодні і без них вміють вистрілити в пару Гб оперативки на рівному місці...


-------


а давайте напишемо APL не на js, а на haskell ?
а в браузер пісочницю з сервера прокинемо
(у цьому ж прикол на js писати, так?)

буде і акуратніше, і швидше працюватиме :)

я би над таким посидів, та не в одиночку...

9 078 Востаннє редагувалося P.Y. (08.12.2019 03:52:13)

Re: Тема для розмов

+ регулярка = додатковий спосіб вистрілити собі в ногу

Забобони.

а давайте напишемо APL не на js, а на haskell ?
а в браузер пісочницю з сервера прокинемо
(у цьому ж прикол на js писати, так?)

буде і акуратніше, і швидше працюватиме :)

я би над таким посидів, та не в одиночку...

Коли я займався APL, то в моїх мріях було зробити код, що виконуватиметься на GPU. Це можливо зробити в браузері, але значну частину коду доведеться переписати на GLSL (що має схожий сішний синтаксис і дуже несхожу систему типів. Маю підозру, подібний задум був і в автора NGN APL (від якого я відштовхувався) — деякі задіяні там класи несуть якусь користь переважно в контексті WebGL). Це щодо швидкодії.

Що ж до синтаксичних можливостей APL (чим я, власне, займався), для продовження проекту було б краще взяти щось синтаксично схоже на JS (бо там купа коду, і переважно не мого, який мені лінь переписувати з нуля), хіба що, можливо, з більш послідовною реалізацією прототипної моделі (яку було б зручно задіяти, якби JS'івські прототипи могли хоч щось, крім свого недоООП).

Подякували: leofun01, 221VOLT2

9 079

Re: Тема для розмов

та які забобони, пишу з власного досвіду --
накалякав невеличку регулярку, нагодував її невеличким текстом з трьох строк,
а вона 2Гб+ оперативки віджерла  :D

називається пиши регулярки на сервер -- і від декількох користувачів оперативка закінчиться))

і так, я регулярки готувати вмію поки ще не дуже *CRAZY*

9 080

Re: Тема для розмов

Хтось може пояснити мені, який це тип лампочки?https://replace.org.ua/uploads/images/2564/6b965f0844b444bf1e59267378fbaf62.jpg