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