Куча говна / Говнокод #26456 Ссылка на оригинал

0

  1. 1
IT Оффтоп #34

#1: https://govnokod.ru/18142 https://govnokod.xyz/_18142
#2: https://govnokod.ru/18378 https://govnokod.xyz/_18378
#3: https://govnokod.ru/19667 https://govnokod.xyz/_19667
#4: https://govnokod.ru/21160 https://govnokod.xyz/_21160
#5: https://govnokod.ru/21772 https://govnokod.xyz/_21772
#6: (vanished) https://govnokod.xyz/_24063
#7: https://govnokod.ru/24538 https://govnokod.xyz/_24538
#8: (vanished) https://govnokod.xyz/_24815
#9: https://govnokod.ru/24867 https://govnokod.xyz/_24867
#10: https://govnokod.ru/25328 https://govnokod.xyz/_25328
#11: (vanished) https://govnokod.xyz/_25436
#12: (vanished) https://govnokod.xyz/_25471
#13: (vanished) https://govnokod.xyz/_25590
#14: https://govnokod.ru/25684 https://govnokod.xyz/_25684
#15: https://govnokod.ru/25694 https://govnokod.xyz/_25694
#16: https://govnokod.ru/25725 https://govnokod.xyz/_25725
#17: https://govnokod.ru/25731 https://govnokod.xyz/_25731
#18: https://govnokod.ru/25762 https://govnokod.xyz/_25762
#19: https://govnokod.ru/25767 https://govnokod.xyz/_25767
#20: https://govnokod.ru/25776 https://govnokod.xyz/_25776
#21: https://govnokod.ru/25798 https://govnokod.xyz/_25798
#22: https://govnokod.ru/25811 https://govnokod.xyz/_25811
#23: https://govnokod.ru/25863 https://govnokod.xyz/_25863
#24: https://govnokod.ru/25941 https://govnokod.xyz/_25941
#25: https://govnokod.ru/26026 https://govnokod.xyz/_26026
#26: https://govnokod.ru/26050 https://govnokod.xyz/_26050
#27: https://govnokod.ru/26340 https://govnokod.xyz/_26340
#28: https://govnokod.ru/26372 https://govnokod.xyz/_26372
#29: https://govnokod.ru/26385 https://govnokod.xyz/_26385
#30: https://govnokod.ru/26413 https://govnokod.xyz/_26413
#31: https://govnokod.ru/26423 https://govnokod.xyz/_26423
#32: https://govnokod.ru/26440 https://govnokod.xyz/_26440
#33: https://govnokod.ru/26449 https://govnokod.xyz/_26449

Запостил: gost gost, (Updated )

Комментарии (477) RSS

    • Доброе.
      Чото фантомас разбушевался: за ночь 94 попытки зайти на мои сервера под рутом, при том что там разумеется ни рут не разрешен, ни вход по паролю.
      DenyHosts меня заспамил.

      Серверва между собой не связаны, но хостятся у одного хостера, то-есть в одной AS. Сканил ботнет со машинками по всему миру (в адресах даже Бразилия есть).

      При этом на третьем сервере (в другой AS) тишина. Такое чуство, что кто-то обозлился на моего хостера.

      Интересно, что уёбки нашли ssh на четырехзначных портах, хотя везде стоит -j DROP, то-есть вообще говоря надо потрудиться, чтоб всё перебрать.
      Ответить
      • Публичный сервис, сайтцы какие-нибудь хостятся?

        Именно поэтому я за «Cloudflare», кстати.
        Ответить
        • хостяца, но один их них вообще мало кому известный. Думаю, сети сканят просто так, хотя может быть и берут ссылки с каких-то помоек.

          Клаудфлейр как-то жирно будет для них: впс мелкие, стоят физически в моем городе, стоят в моем городе, защищаться вроде бы особо не от чего.

          На работе у нас aws, там конечно всем похуйю на сканы: сервера приложений могут вообще наружу не торчать, а снаружи все прикрыто их фронтом
          Ответить
          • Скорее всего просто ссылка попала под раздачу ботам. Там небось ещё и куча обращений на /wp-admin.php, лол.

            У «Cloudflare» мне больше всего DNS и его настройки нравятся. Быстро, удобно, обновляется сразу же.
            Ну и сокрытие IP от ботошума, статистика и кэширование, конечно. Плюс перевод на них очень прост — прописываешь их NS-сервера и всё.
            Ответить
            • обращения разные, но и wp тоже ищут конечно
              404 Not Found
                     /: 17 Time(s)
                     /a2billing/admin/Public/index.php: 2 Time(s)
                     /admin/config.php: 2 Time(s)
                     /owa/auth/logon.aspx: 2 Time(s)
                     /robots.txt: 2 Time(s)
                     /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php: 2 Time(s)
                     /.env: 1 Time(s)
                     /.env.backup: 1 Time(s)
                     /.env.example: 1 Time(s)
                     /.env.test: 1 Time(s)
                     /HNAP1/: 1 Time(s)
                     /MyAdmin/scripts/setup.php: 1 Time(s)
                     /ReportServer: 1 Time(s)
                     /TP/html/public/index.php: 1 Time(s)
                     /TP/index.php: 1 Time(s)
                     /TP/public/index.php: 1 Time(s)
                     /elrekt.php: 1 Time(s)
                     /favicon.ico: 1 Time(s)
                     /html/public/index.php: 1 Time(s)
                     /index.php: 1 Time(s)
                     /index.php?s=/Index/\x5Cthink\x5Capp/invok ... ]=HelloThinkPHP: 1 Time(s)
                     /myadmin/scripts/setup.php: 1 Time(s)
                     /nice%20ports%2C/Tri%6Eity.txt%2ebak: 1 Time(s)
                     /phpMyAdmin/scripts/setup.php: 1 Time(s)
                     /phpmyadmin/: 1 Time(s)
                     /phpmyadmin/scripts/setup.php: 1 Time(s)
                     /pma/scripts/setup.php: 1 Time(s)
                     /public/index.php: 1 Time(s)
                     /solr/: 1 Time(s)
                     /static/CACHE/css/output.bf9987492fe2.css: 1 Time(s)
                     /static/CACHE/css/output.e94fab59fe11.css: 1 Time(s)
                     /thinkphp/html/public/index.php: 1 Time(s)
                     /w00tw00t.at.blackhats.romanian.anti-sec:): 1 Time(s)
                     /wp-login.php: 1 Time(s)
                     /wp/license.txt: 1 Time(s)

              именно по этому я за
              Ответить
              • Кстати, можно какую-нибудь рекламу в ответ на их запросы отдавать. Пусть читают в логах.
                Ответить
                • logwatch же, каждый день мне шлет отчеты. На убунте из коборки вообще
                  Ответить
                • ps: думаю, у тебя не шлет, потому что root не имеет алиаса на твое имя, и почтовый питуз тупо кладет его руту в мейлбокс локально
                  Ответить
                    • в дебиане нихуя нету по умолчанию, да
                      Ответить
                          • Не знаю что это такое. Я просто логинюсь по «SSH» по логину и паролю и теку.
                            Ответить
                            • надеюсь, логинишься ты под рутом, а пароль от него -- твй день рождения?
                              Ответить
                            • инью, фуу
                              21/tcp    open     ftp
                              22/tcp    open     ssh
                              ....
                              3306/tcp  open     mysql
                              Ответить
                              • Вылечим ваш сайт от вирусов
                                https://www.beget.com/ru/news/2018/antivirus

                                Обнаружение вредоносных скриптов в файлах: вирусные вставки, веб-шеллы, бэкдоры, фишинговые страницы, дорвеи, спам-скрипты и другие
                                Ответить
                                • зачем тебе торчащие наружу ftp и mysql, например?
                                  Ответить
                                  • Это дефолтные настройки, я ничего не менял, и не факт, что можно. И главное нахуй нужно?
                                    Ответить
                                    • дефолтные настройки чего?

                                      >нахуй
                                      Ты задаешь неправильный вопрос.

                                      Спрашивать нужно "нахуй мне нужен торчащий наружу порт?"

                                      Это как сделать класс public не потому, что кто-то им пользуется, а потому что это "настройки по умолчанию"
                                      Ответить
                                    • 1. Если у тебя на сервере не «Windows», то к «MySQL» можно подключаться не через tcp/ip, а через файловый сокет. Тогда подключиться к нему смогут только процессы, у которых есть доступ к данному inode, например, к /tmp/mysql.sock.

                                      https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_socket

                                      Оказывается, даже в «Windows» можно использовать «named pipes».

                                      2. Значение bind-address установи в 127.0.0.1, чтобы подключиться смогли только локальные процессы. По умолчанию там * или 0.0.0.0, что позволяет подключаться из внешней сети.

                                      https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_bind_address
                                      Ответить
                                      • Ещё раз повторю. Я подключился по «SSH» и просто залил файлы, и ничего не настраивал. Именно поэтому я за «PHP».
                                        Ответить
                                        • ну то-есть тебя не смущает, что левые хуи поджбирают пароли к твоей бд, ftp и ssh?
                                          Ответить
                                          • А у меня неебать какай крутой и дорогой сервис, что я не должен допускать такие риски?
                                            Ответить
                                            • Ты опять задаешь неверный вопрос:)

                                              Спрашивать надо: могу-ли я повысить безопасность бесплатно. Если ответ "да", то это надо делать.

                                              Это же интернеты, тут надо быть параноиком.

                                              К примеру если бы я предложил тебе поставить защиту от DDoS атак за деньги, то ты бы мог возразить, что игра не стоит свеч. А закрыть порт довольно легко
                                              Ответить
                                      • Даже если ты используешь tcp/ip, ты можешь
                                        * слушать 127.0.0.1
                                        * закрыть снаружи порт
                                        Ответить
                                        • Да вообще ничего не трогать в sql-питушне, просто закрыть порт в ип таблицах.
                                          Ответить
                                    • А если бы по дефолту был root и пороль 123 тоже бы не менял?
                                      Ответить
                                      • нидлес, а ты умеешь изобразить многомерные массивы в тсл?
                                        Ответить
                                        • Да хоть N-мерные, в чём проблем?
                                          foreach i {0 1 2} {
                                              foreach j {0 1 2} {
                                                  set a($i,$j) [expr $i * 3 + $j]
                                              }
                                          }
                                          Правда дикоративно умею тлько одномерные.

                                          Можно ещё письку писек сделать.
                                          Ответить
                          • Если есть возможность, проверь «holywars.ru». Мне интересно, сколько всего там сделано неправильно.
                            Ответить
                            • У меня под рукой инструментов нет, а на 22-м порту у них ничего не висит.
                              Но в первую очередь, конечно, неправильно то, что у них «HTTPS» вообще нет.
                              Ответить
                                • И инк просил именно ssh проверить?
                                  Ответить
                                • Ну, мы же про проблемы безопасности говорим. Отсутствие «HTTPS» — одна из таких.
                                  Ответить
                                  • 22/tcp   open     ssh
                                    25/tcp   open     smtp
                                    80/tcp   open     http
                                    110/tcp  open     pop3
                                    111/tcp  filtered rpcbind
                                    143/tcp  open     imap
                                    445/tcp  filtered microsoft-ds
                                    465/tcp  open     smtps
                                    587/tcp  open     submission
                                    993/tcp  open     imaps
                                    995/tcp  open     pop3s
                                    2000/tcp open     cisco-sccp

                                    ебать там ельдорадо

                                    вполне там есть ссш
                                    SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu3


                                    АХАХАХА
                                    КЛОУНЫ ЗАКРЫЛИ доступ из за пределов России
                                    попробуй подключица сам
                                    Ответить
                                    • Открою секрет: там по SSH открыт доступ только из сегмента RIPE. Из ARIN, APNIC, LACNIC и прочих AFRINIC доступ закрыт.
                                      Ответить
                                      • DMARC тоже нет.

                                        Вообще такое чуство, что сервер настроили в 2010-м году и забили
                                        Ответить
                                        • На самом деле почти так всё и было. Только пару раз вносились косметические изменения в конфигурацию.

                                          Изначально там для рута был очевидный пароль (очевидный для русскоязычных). За несколько лет никто не подобрал.
                                          Ответить
                                          • у вас еще и PermitRootLogin?
                                            Зачем? Зачем?
                                            Ответить
                                              • Подтверждаю. Тоже люблю держать открытым окошко «Putty» с рутом.

                                                А ещё иногда на домашнем компе открываю cmd.exe от NT AUTHORITY\SYSTEM и теку.
                                                Ответить
                                                • не забудь сделать проброску 445 порта наружу у винды, и включить в ней гостя
                                                  Ответить
                                              • Не знаю, у меня обычно в жопе свербит, если я понимаю, что что-то сделано "не по уму".

                                                Отключение неевропейских региональных регистраторов это мудрный шаг, но говна и в европах порядочно
                                                Ответить
                                            • > зачем

                                              Вай нот?

                                              Большая часть работы на серваках связана с рутом или специальными юзерами. Зачем пердолиться с sudo и лишними паролями, если можно сразу подключиться рутом?

                                              Безопасность это не снижает.
                                              Ответить
                                              • вообще-то снижает.

                                                * тебе нужно иметь и ключ (для подключения) и пароль для sudo. А так ты сразу попадешь рутом.
                                                * в его случае (с парольной аус) это и вовсе один шаг
                                                * никогда не сидите по рутом. Dixi
                                                Ответить
                                                • > пароль для sudo

                                                  Он только мешает. Если под тобой смогли зайти, то это уже фейл - присунут кейлоггер да и всё.

                                                  > парольной аус

                                                  Ну тут да, надо отключать. К слову, эта опция только для входа по паролю, по ключу рут и так зайдёт если он задан.

                                                  > никогда

                                                  Защита от дурака? Ну ок, хотя красный промпт работает лучше чем суду на каждый чих, имхо.

                                                  > authorized_keys

                                                  Шта? Ты боишься засветить юзерам с правом на суду свой публичный ключ?
                                                  Ответить
                                                  • >Шта? Ты боишься засветить юзерам с правом на суду свой публичный ключ?

                                                    Я неверно выразился: если мы все будем сидеть под рутом, то придется или пихать все наши ключи в authorized_keys, и можно будет случайно грохнуть чужой, либо придется иметь там один ключ, но тогда и приватный у всех будет общий, а это не удобно.

                                                    В конце концов выкинуть питуха не потревожив остальных будет нереально.

                                                    Так понятнее?

                                                    >Если под тобой смогли зайти, то это уже фейл - присунут кейлоггер да и всё.

                                                    Если подомной зашли, то я об этом узнаю в первый же вечер по логам даже не заходя на сервер. Без судо они auth.log (или secure в центоси) не вытрут.

                                                    >Защита от дурака?
                                                    Ну, часть действий (вроде пинга и проверки доступности других серверов и бекапа) я могу делать без рута.
                                                    А в целом да, защита. Хуйнул хуйню из буфера, и пиздц.

                                                    >красный промпт
                                                    да, это хорошо

                                                    > суду на каждый чих
                                                    суда запомниает же.

                                                    >о ключу рут и так зайдёт если он задан.
                                                    да? слава богу, у меня нету ключен у руты
                                                    Ответить
                                              • зы

                                                не гря уже о том, что у меня на серверах есть разные люди, не тока я, и я не хочу делица с ними моими .vimrc, а особенно authorized_keys не хочу
                                                Ответить
                                          • давай еще обосру

                                            http://holywars.ru/public/images/rate5.gif

                                            * где перманентный кеш?
                                            * Expires: Fri, 06 Mar 2020 15:45:30 GMT -- что будет, если дизайнер решит ее поменять? я буду еще неделю на старую смотреть?
                                            * Server: lighttpd/1.4.51: очень ценная информация, спасибо, что поделились (привет убунту баннеру в ssh)
                                            * гиф в z0z0 это буэ, но если уж и гиф, то надо делать спрайт: экономия на таблице цветов

                                            html
                                            * Errors found while checking this document as -//W3C//DTD XHTML+RDFa 1.1//EN!
                                            Validation Output: 10 Errors
                                            фууу

                                            * http://holywars.ru/public/cache/css/bundle_54c4c1ecb9a390d2b35d095dfe6f513a.css?1481146824

                                            ну хоть тут пермокеш
                                            * Sorry! We found the following errors (1)
                                            ".link_pointer Value Error : cursor hand is not a cursor value : hand"
                                            какой бугор



                                            * с респонсивностью как-то не очень, попробуй на ифоне открой

                                            * Content-Security-Policy где?!!

                                            ну, про https уже говорили
                                            Ответить
                                            • Мне «webpagetest.org» предложил закэшировать «https://gcode.space/api/comments». Какой багор )))
                                              Ответить
                                              • пушо он не ебет, что это динамический файл
                                                а неебет он вероятно потому, что у тебя нету прагма cache-control

                                                ты можешь в теории реализнуть кеш: отдавай дату модификации для последней записии, и реализуй етаг и if-modified-since
                                                Ответить
                                                • Бля, как всё сложно.
                                                  Как в «nginx» адекватно настроить кэш? Я осилил только
                                                  location /db_dumps/ {
                                                      root /home/python/ngk;
                                                      autoindex on;
                                                      
                                                      etag on;
                                                      if_modified_since exact;
                                                      add_header Pragma "public";
                                                      add_header Cache-Control "max-age=31536000, public";
                                                  }
                                                  
                                                  location = /favicon.ico {
                                                      root /home/python/ngk/static/img;
                                                      
                                                      etag on;
                                                      if_modified_since exact;
                                                      add_header Pragma "public";
                                                      add_header Cache-Control "max-age=31536000, public";
                                                  }
                                                  
                                                  location /img/ {
                                                      etag on;
                                                      if_modified_since exact;
                                                      add_header Pragma "public";
                                                      add_header Cache-Control "max-age=31536000, public";
                                                  }

                                                  , но это же говно ебаное.
                                                  Ответить
                                            • Готов ещё обосрать?

                                              Тогда вот ссылка:
                                              http://holywars.ru/comments/14557

                                              Тут 3760 комментариев на одной странице, причём лимит комментария не 2к, как на «Говнокоде», а 30к. Да, это офтопик с перекатами, типа местных «IT офтопов».

                                              Обосрать нужно скорость загрузки, расход оперативки браузером, отзывчивость, юзабельность и т. п.
                                              Ответить
                                              • Пиздец ко-ко-кой-то. 793 запроса.
                                                Именно поэтому я за «пагинацию».
                                                Ответить
                                                • Поди, в основном картинки с внешних сайтов? Или аватарки пользователей?

                                                  Собственные CSS и JS вроде упаковали.
                                                  Ответить
                                    • Лолблядь, а я через «sshaudit.com» проверял.
                                      Самому мне надо «VPN» отключать, лень.
                                      Ответить
                                    • Это чтобы абама абизяна не мог спросить чего нить. Никс и ильдорадо такие же пидорашки лишнехромосомные.
                                      Ответить
                                  • на двухтыщном порту имап висит
                                    MPLEMENTATION" "dovecot"
                                    "SIEVE" "fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include body variables enotify environment mailbox date"
                                    "SASL" "PLAIN LOGIN"
                                    "STARTTLS"
                                    "NOTIFY" "mailto"
                                    "VERSION" "1.0"
                                    OK "Dovecot ready."
                                    Ответить
                            • там нет https, это сразу в топку
                              Ответить
        • Да vps'ки под скан почти мгновенно попадают, у меня уже в первый день кто-то тестил всяких рутов да админов.
          Ответить
          • Под лёгкий скан по 21/22 портам — да, сейчас весь IPv4 сканируют все кому не лень. А вот чтобы целенаправленно искали четырёхзначные порты — это надо попасть к кому-то в отдельный списочек. Впске с NGK уже года полтора, и до сих пор никто не стучится.
            Ответить
            • Зато если вдруг понядобится список популярных логинов можно не искать по интернетам, а взять из логов.

              Удобно.
              Ответить
    • Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за "Именно по этому я за рекурсию"""""""""""""""""""""""""""""""""""""""" "
      Ответить
    • Какой хардкор (((
      Видео не смотрел, петуха вылечили?
      Ответить
    • шото блядь я сомневаюсь в таких методах. Ветеренары знакомые рассказывали про дебилов, которые собаке понос лечили водкой с яйцом
      Ответить
    • Мне рассказывали про трусливого петуха, которого другие петухи регулярно клевали. Однажды ему налили водки, и он, потеряв страх, навалял всем. Больше с ним никто не дрался.
      Ответить
    • Ух, пидор!

      >>>
      Has anyone conditionally used CryptoKit? When I try to use it,
      guarded with `if #available(iOS 13, *)`, it produces a dyld
      “Library not loaded” error. And I can’t manually add it to my
      build phases either because it doesn’t show up as an option.

      Тьфу, ну что за нежные создания эти пидоры! Опции у него нет. Вот в наше время наших крестах нет никаких «build phases», понадобилась либа — сам её компиль и проверяй, чтобы все байтики на место легли. Это вам не это!
      Ответить
      • Ты не понял.

        CryptoKit появился только в iOS13, а чувак поддерживает и более старые версии оси.
        Ответить
        • А почему Library not loaded?

          Потому что на версии до 13 он пытается загрузить dyld и падает?
          Тогда как тутпомогут билд фазы?
          Ответить
          • Да, именно.
            Он добавил CryptoKit в проект, в котором Deployment Target ниже, чем версия оси, в которой этот CryptoKit появился. Почему-то он не может добавить CryptoKit в проект (старая версия XCode? хуй знает почему), иначе смог бы выставить для фреймворка статус Optional, это можно сделать, как оказалось, и в фазах сборки.
            Ответить
            • >Он
              ну вообще он просит называть его "она", а так понятно, спасибо
              Ответить
              • > Он добавил CryptoKit в проект
                > Почему-то он не может добавить CryptoKit в проект
                - по пятницам я Черномырдин. Имелось в виду, что он-она не может почему-то добавить фреймворк в build phases. Что мешает его добавить в Linked frameworks и сделать его optional, я не знаю. Наверное, потому что attempted suicide rate among trans people is something like 45%
                Ответить
                • Специально пошел, и проверил билд-фазу "Link binary with libraries".
                  " Libraries can be designated as required or optional (weakly linked—that is, linked such that your app still loads even if the library isn’t present)."
                  https://help.apple.com/xcode/mac/10.2/#/dev50bab713d

                  Не понимаю, почему она не смог.

                  Кстати, а что будет, если не удасца загрузить опциональную депенденсу?
                  Кто-то вернет nil?
                  Ответить
                  • Так сходу не скажу, не помню, когда в последний раз делал Optional dependency.

                    По идее, все вызовы из этой либы надо будет оборачивать в подобие
                    if #available(iOS 13, *)
                    , тогда будет работать, иначе даже не скомпилится. Но надо проверять.
                    Ответить
                  • В общем, всё очень забавно.

                    CryptoKit отдельно в проект добавлять не надо, достаточно просто написать
                    import CryptoKit
                    - при наличии достаточно свежей макоси и икскода, разумеется. Потом можно взять функцию из этой либы, обмазать её if #available и запустить проект с Deployment targer = 12.0 на, например, симуляторе с той же 12-ой осью.

                    Реально выходит, что “Library not loaded”))) Правда, потому что "Reason: no suitable image found. Did find:
                    /System/Library/Frameworks/CryptoKit.framework/CryptoKit: mach-o, but not built for iOS simulator". На девайсе щас не могу проверить.

                    И это реально багор: фреймворк типа есть, а сделать его Optional хуй знает как, потому что в проекте он не фигурирует))
                    Ответить
                    • Это какая-то модульная магия)

                      Может, жопа правда в том, что CryptoKit есть только для ифонов, а для x86 нету, и потому не работает?
                      Ответить
                        • Ну тогда это бага эппла, что они не зашипили такую либу, которую можно на эмуляторе запустить. Я тогда правда не понимаю как отлаживать этот криптокит. на реальном девайсе разве что
                          Ответить
                      • cd /System/Library/Frameworks/CryptoKit.framework
                        lipo -info CryptoKit

                        Non-fat file: CryptoKit is architecture: x86_64

                        Это системный макосовский. Надо вспомнить, что там за системная либа для айосных фреймворков, и посмотреть там, но мне щас лень)
                        Ответить
      • Жирный текст — это очень эффективно, продуманно и удобно!
        #вореции
        Ответить
    • первую статью о скором пришествии ипв6 я прочитал в 2003 году
      Ответить
    • >ЧИТАЮТ СЕЙЧАС
      FreeBSD: гораздо лучше GNU/Linux
      Может, нам слегка успокоиться с JavaScript?

      ничо си! прямо оттепель
      Ответить
        • Люблю такие развернутые и аргументированные посты.

          Как бывший пользователь $FOO я могу заявить, что $FOO хуже $BAR.
          Ответить
              • Попробуй $CORGE, $GRAULT,
                Попробуй $GARPLY, $WALDO!
                Попробуй $FRED, $PLUGH,
                Мне это $XYZZY надо!
                Ответить
                • перевел на олимпиандно-вконтактный, прверь
                  Попробуй j, J
                  Попробуй q, x1
                  Попробуй Q, X1
                  Мне это y, y4
                  Ответить
                      • Когда-то в сях было лимит на длину имени 5 симовлов, а O_CREAT возможно взялся кка производная от creat.
                        Ответить
                        • В крестах лимитов не было, но один хуй std::ios_base::app и std::ios_base::ate высрали.
                          Ответить
                            • конечно, это поддержка apps для ios в cтандартной библиотеке C++.

                              там еще есть std::android, std::symbian, std::blackberry и даже std::palm_os
                              проверь
                              Ответить
                                • брю же это паркетный менеджер под дарвинось?
                                  Ответить
                                        • понятно. Всех убили андроид и иос, другие мубильные платформы не нужны.

                                          Осталось только выдумать единый язык под них (реакт нейтив идет нахуй разумеетcя, а ксамарин платный) и станет совсем заебись.

                                          Есть проект коко нейтив, который в теории можно будет запустить под иос (он будет фронтом к ллвм), но я хуй знает как они туда завезут реф каунтинг, и что скажет Apple.

                                          А вот Swift под андроид вроде бы никто и не пытался завести (ну или я про это не знаю).

                                          Смешно, но крмое нящной и крестов других вариантов кроссплатформы нету
                                          Ответить
                                            • ну как чойто?
                                              у меня просто данные не обновлялись с 2015-го года, а в ту пору он был платный
                                              Ответить
                                              • Проблема-то не только в языке. Надо ещё писать отдельный общий UI-фрейморк. Тот же Мигель пытался, но обосрался и теперь вроде рекомендуется использовать нативные контролы, только переписанные на C#.

                                                И я вот не понимаю, а чо как мне присобачить сишную либу в проект на Ксамарине, чтоб без ебли?
                                                Ответить
                                                • UI как раз вопрос сомнительный: я бы хотел видеть на иос его родной барабан например, а не хуйпоймичево.

                                                  >нативные контролы, только переписанные на C#.
                                                  хм) это как? Обертки вокруг родных контролов типа UIPickerView ?

                                                  Я не спец по ксамарину, кажется что придется компилировать сишную либу два раза: под андроид и под ios. Как сделать интероп с C# я не знаю. PInvoke там не работает?


                                                  ps: я даже не против написать юай под каждую ОС, но я не хочу писать бизнес-логику два раза, насколько я понимаю, ксамарин похзволяет написать ее один раз на шарпе
                                                  Ответить
                                                  • Ну вот собсно теперь ты можешь использовать UIViewController, написанный на C#.

                                                    Кросс-платформа имеет смысл, когда у тебя хотя бы половина проекта это хитровыебанная бизнес-логика, которая не завязана на системные фишки.

                                                    Про PInvoke не знаю, может, и работает, но чот не уверен, что эппл погладит за такое по головке.
                                                    Ответить
                                                    • Есть ощущение, что логика есть в любом проекте.

                                                      Ну вот хотябы просто валидация: в поле ввода я хочу видеть число от 12 до 91, и я не хочу это знание два раза программировать.

                                                      Пишут, что можно:
                                                      https://github.com/bryonbaker/Xamarin-PInvoke-Example
                                                      Ответить
                                                      • Это всё типа экономия на девелоперах, но по факту будут нужны чуваки, которые шарят обе платформы, а таких ниндзя, да чтоб они ещё и на шарпе писали, найти не так просто, хотя они есть. Рынки ксамаринщиков и нативщиков, как мне кажется, не пересекаются.

                                                        Ксамарин почему-то любят конторы, занимающиеся говнослотами.
                                                        Ответить
                                                        • Да, кажется что серьезные приложения будут требовать понимания API операционок за пределами ксамарина, тоесть нужен чувак, который одновременно знает

                                                          * Swift/llvm и UIKit
                                                          * Kotlin/JVM(ART)
                                                          * C#/.NET
                                                          и умеет это все дебажить и профилировать еще.

                                                          Довольно крутой чувак.

                                                          Интересно, а можно заембеддить в это все какой-то высокоуровневый язык скриптовый, чтобы про ios и android писали разные чуваки, а третий чувак делал UI и высокоуровневую бизнес-логику на этом языке?

                                                          ps: в некоторых компаниях есть отдельные отделы разработки под андроид и иос, и они не пересекаются
                                                          Ответить
                                                    • да, звучит не плохо.

                                                      Так получается что я могу забесплатно написать кроссплатфрменную хрень, при условии, что у меня есть мак (чтобы это компилировать) и умение писать на шарпах?
                                                      Ответить
                                                      • Да.

                                                        Ещё есть вариант: https://elementscompiler.com/elements/. Насколько оно production ready - хз, но, например, запускать удалённые билды на макбуке с винды у меня так и не получилось.
                                                        Ответить
                    • Так почему ты еще не там? Они хайрят, и офис у них с видом на собор:)
                      Ответить
                        • А ты не рассказывай што ты умееш)) они на няшной пишут же.
                          Но там, afaik, одни олимпиаднички кругом, и общаются они таким сложным матаном, что Сёма бы сразу догадался, что они из рашки
                          Ответить
                          • Кстати, а вконтактовцев заставляют регаться в вк?
                            Ответить
                            • Возможно, у них есть внутренний ВК (альфа версия), в котором идёт корпоративное общение. Но я не знаю, это только догадки.
                              Ответить
                              • Который делают (на PCP) внутренние вконтактовцы, у которых есть...

                                Простейшая, доступная даже Сёме из рашки индукция же. Именно поэтому не приглашают с видом на забор.
                                Ответить
              • Посмотрел в стоке им. Борманда, кто упоминал «quux» на «Говнокоде». Результаты:
                • TEH3OPHblu_nemyx
                • PA3yMHblu_nemyx
                • guest8
                • inkanus-gray

                Больше никто. Какой деанон )))
                Ответить
                • таким образом стало понятно что ты, я, иканус и петухи -- одно и тоже лицо
                  Ответить
                  • Именно поэтому я за „Говнокод“.
                    Ответить
                    • а зачем я отвечаю сам себе? я что -- ёбнутый?
                      Ответить
                      • зачем я это спрашиваю? зачем? зачем?
                        Ответить
                  • Так вот почему икарус и не соглашается, и не отказывается от встречи в реале.
                    Ответить
    • > эффективно и удобно

      Статья не от cisco случаем? Хотя там обычно помогали сохранять инвестиции...
      Ответить
      • MS тоже так умеет.

        Независимые исследования* доказали, что использование продуктов Microsoft позволяет снизить издержки на обслуживание IT в три с половиной раза по сравнению с продуктами конкуретнов

        * проведенные по заказу Microsoft
        Ответить
        • Это как в статье про одно из обновлений у них - "обновления повышают безопасность, надёжность и удобство блаблабла... после установки данного обновления в некоторых ситуациях компьютер может перестать загружаться, некоторые приложения из стора перестанут работать - переустановите их, а ещё мы проебали итальянскую локализацию для некоторых прог".
          Ответить
          • Это ещё, считай, повезло.
            https://habr.com/ru/post/425459/
            >>> Обновление до Windows 1809 (иногда) уничтожает все файлы в профиле
            Именно поэтому я снёс нахуй службу обновлений и обновляюсь вручную.
            Ответить
            • >Именно поэтому я снёс нахуй службу обновлений и обновляюсь вручную.

              Именно поэтому я перешёл на Линукс. И там тоже отключил автоапдейт нахуй.

              А вообще система автообновлений мне напоминает уязвимость, позволяющую удалённое выполнение кода.
              Ответить
              • У винды еще прелесть системы обновления в том, что она не считает нужным показывать тебе, что она делает.

                Там конечно есть логи, но в них разбираться то еще удовольствие.

                Вот у тебя час висит надпись "Windows обновляется, завершено 4%, пожалуйста подождите". И как блядь мне понять, что оно делает?

                Ни yum, ни apt, ни pacman, но slackupdate со мной так не поступают
                Ответить
                • С помощью менеджера я могу обновить только нужную мне либу. Или пакет.

                  Допустим только ядро. Или openssl (закрыть очередную дыру). Или Гiгефох.

                  Ещё могу даунгрейднуться обратно.

                  Были и такие случаи, когда в новых билдах ядра появлялись странные баги. Тогда я просто откатывался на старую версию.
                  Ответить
                  • да, это правда. Хотя у него могут быть и зависимости тоже.

                    В слакваре я могу обновить пакет без зависимостей, но если всё сломается, то я сам себе злобный буратино.

                    Тем не менее не может быть такого, чтоб я в убунте обновил питон, а мне за одно и драйверы сетевухи обновились. А винда пишет: "этот пакет исправляет ошибки", а что именно и где он исправляет -- не говорит.

                    Справедливости ради, винда всегда создает точку восстановления, и можно откатиться к старой версии файлов, а линуксы так не делают. Так умеет Solaris c его ZFS, но он не слишком-то популярен.
                    Ответить
                    • >винда всегда создает точку восстановления, и можно откатиться к старой версии файлов, а линуксы так не делают.

                      Btrfs, не?
                      Ответить
            • Кстати, это вообще пиздец, если вдуматься.

              Чтобы удалить какой-нибудь системный файл из системной папки (%WINDIR%, например), пользователю надо ТРИ раза нажать на подтверждение: сначала общий запрос на удаление, потом UAC, а потом — запрос на удаление системного файла. ТРИ окошка для удаления одного файла!

              И нет, я не к тому, что это плохо (наоборот, это, в общем случае, довольно полезная фича: если бы я к ней прислушался — не сидел бы сейчас на полусломанной системе, бля⁢…).
              Я к тому, что какое-то обновление, которое без спросу качается и без спросу и возможности отказаться устанавливается, так же тихо и бесшумно удаляет какие-то там файлы.
              Блядь, в винде есть очень, очень крутая фича — «Корзина» называется! Ну используйте, используйте её — пусть всё, что удаляет очередное обновление или ещё какая-нибудь системная хуйня, оказывается во временной папочке в «Корзине», она для этого создана, ёбанарот!
              Но нет, нахуй надо, лучше мы просто молча чего-нибудь удалим, в лучших традициях нетестированной свободушни, которую пишет один пердолик.

              Говно.
              Ответить
              • Какие-то обезьяны систему проектировали.

                Хуже только сервис «itunes», который может дистанционно по ошибке что-нибудь стереть из твоей фонотеки или что-нибудь добавить.
                Ответить
                  • Я уж подумал, что Эппл тогда сломала SIP, а на деле "всего лишь" FaceTime. Вот если бы они в сотовой связи такую херню провернули, вот это был багор багоров.
                    Ответить
                • Слово «пыхомакака» придумали на «Говнокоде»?
                  Ответить
                  • Сейчас попытался погуглить. Одно упоминание в «Дваче», одно в «ЛОРе», одно в «Гейдеве». А мне это слово казалось общепринятым. Видимо, у меня говнокодовская деформация.

                    Так и вореции буду считать общепринятыми...
                    Ответить
              • Меня на ГК сильно минусовали за критику автообновлений.

                >https://govnokod.ru/17151#comment255940
                Эпик, когда с автообновлениями оперы неожиданно приехал хром.

                https://govnokod.ru/19683#comment319390
                Сёма и хром

                https://govnokod.ru/20265#comment336237
                Опять в хроме с автоапдейтом говно приехало

                PS: а вот ещё в 2012 году, я критикую автообновление софта: https://govnokod.ru/9604#comment131983
                Ответить
              • >Кстати, это вообще пиздец, если вдуматься.
                Так я никогда и не занимал иной точки зрения.

                1024-- 22.11.2014 14:22 # 0
                А мне автообновления плохого не делали. Ну разве что Windows 8 надо вежливо, но настойчиво попросить не перезагружаться автоматически.
                Зато открываю я календарь, а там уже и зона новая, и предупреждение о переводе стрелок. Я ничего не трогал, а уже всё хорошо, всё работает.


                3.14159265 22.11.2014 14:34 # 0
                Есть такой принцип - работает, не трогай без особых на то причин.
                Если в апдейтах нет фиксов критических ошибок или новых киллер-фич, то апдейтится не стоит.

                Когда человек апдейтит руками он смотрит что же нового ему предлагают, и не выступает бесплатным бета-тестером всякого софта.

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


                https://govnokod.ru/17148#comment255690

                I told ya.
                Ответить
                • > бета-тестером

                  Ну, к слову, у меня сейчас накопительный апдейт десятки был показан как optional и его какое-то время можно не ставить пока отважные хомячки его на себе тестируют.
                  Ответить
            • Вытиранам доступно обновление до Windows 1812
              Ответить
          • воообще маркетинговая параша жутко бесит.

            Микрософт никогда не мог сказать, например, "вот эксчендж это групваре: почтовик с такими вот протоколами доступа плюс общие папки, календар, форум и мессенджер"

            Он говорил: "этот продукт позволяет повысить эффективность вашего бизнеса, решая самые разные бизнес задачи, которые могут возникнуть в крупных компаниях. Высокая надежность и отказоустойчивость позволяет. [и еще хуйни на 8К букв]

            Почитал, и нихуя не понял
            Ответить
          • Такое можно написать для любой программы. Нельзя протестировать программу/обновление на всех конфигурациях.
            Если бы за неправду отрубали бы голову, все, кроме Apple, писали бы как-то так.

            Свободушня вовсе в каждой программе пишет капсом "ЕСЛИ ЧО, ТЫ САМ ЛОХ. ПОВЕРИЛ В НАШУ ПРОГРАММУ. АЗАЗА ЛОШАРА. НИКТО УСТАНАВЛИВАТЬ НЕ ПРОСИЛ. ТЫ САМ ОТВЕЧАЕШЬ ЗА ВСЁ, ДЕБИЛ".
            Ответить
            • Факт в том, что у «Десятки» катастрофически упало качество тестирования. «CI/CD», непрерывные обновления, вот это вот всё.
              https://habr.com/ru/post/427485/.
              https://habr.com/ru/news/t/468585/.
              >>> Ещё в 2014/2015 году в Microsoft работала целая команда, которая занималась тестированием операционной системы, билдов, обновлений, драйверов и другого кода. Команда состояла из нескольких групп, которые проводили тесты, ежедневно встречались и обсуждали баги. Продукты тестировались и вручную, были и автоматизированные тесты. Если все они завершались успешно, команда давала добро на интеграцию кода в Windows.
              >>> Microsoft уволила почти всю команду тестирования Windows, поскольку по новой стратегии фокус смещался с трёх разных систем — Windows, Windows Mobile и Xbox — на одну систему. Бóльшую часть тестов компания перенесла на виртуальные машины.
              Tl;dr: теперь тестерами работают не только инсайдеры, но и вообще все пользователи, отправляющие в M$ телеметрию. Отдел тестирования не нужен.
              Ответить
              • Так ведь нелохи телеметрию отключают, ибо нефиг лишний трафик гонять.
                Ответить
                • Нелохов слишком мало, чтобы M$ на них обращала внимания (да и то, даже так она с ними рагулярно борется). А остальные прилежно работают тестировщиками винды и ещё и платят за это.
                  Ответить
                  • Ну и правильно. Доктор Менгеле тоже опыты на людях ставил.
                    Ответить
              • Потому что у них теперь индус во главе, который, кроме своей ажуры сраной, ничего не знает и не хочет.
                Ответить
              • не только у винды, это у всего так. Это 30 лет назад софт надо было отладить, задокументирвоать, и выдать заказчику.
                Теперь можно срать сырым говном, один хуй завтра апдейт выкатят.
                Ответить
            • >Свободушня вовсе в каждой программе пишет капсом "ЕСЛИ ЧО, ТЫ САМ ЛОХ. ПОВЕРИЛ В НАШУ ПРОГРАММУ. АЗАЗА ЛОШАРА. НИКТО УСТАНАВЛИВАТЬ НЕ ПРОСИЛ. ТЫ САМ ОТВЕЧАЕШЬ ЗА ВСЁ, ДЕБИЛ"

              Свободушня при этом не догадывается стирать юзер-файло.

              > ПОВЕРИЛ В НАШУ ПРОГРАММУ. АЗАЗА ЛОШАРА
              По вопросам веры в церковь. Свободушня говорит, вот программа, вот сорцы. Не нравится — допиливай сам или найми красноглазиков.
              Ответить
              • Справедливости ради, некоторая таки догадывается: https://web.archive.org/web/20191015125002/https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/commit/a047be85247755cdbe0acce6f1dafc8beb84f2ac (оригинал на «Гитхабе» показывает розового единорога и «This page is taking way too long to load». Прямо как на ГК!).

                Той же справедливости ради, свободушню не разрабатывают корпорации с миллиардными доходами и триллионной капитализацией. А пользователи не платят за свободушню неплохие деньги.
                Ответить
                • Так а что это за неизвестная говнятина?
                  Где эпичные баги в systemd и lunix-core?

                  Притом обычно в релизы софт попадает с какой-то задержкой. Бета-тестят арчеводы, генушники, дебиан-сидеры, за ними юзеры свежей федоры.

                  И только после этого оно попадает в редхаты и убунты.
                  Ответить
                  • Это свободушня, которую поздней ночью писал один заебавшийся пердолик и закоммитил её не глядя.
                    Собственно, обновления от «Microsoft» теперь находятся именно на таком уровне.
                    Ответить
                    • Это просто какое-то рандомное гавно с гитхаба.

                      Чтобы подобный кал попал в стабильный дистрибутив нужно как-то очень сильно постараться. А чтобы он попал в дефолтный инсталл, так и вовсе маловероятно.

                      Так-то и в винде можно поставить глючную программу, стрирающую файлы.
                      Ответить
                        • >Пользователям, желающим использовать проприетарный драйвер nvidia (потребуется активировать разделы contrib и non-free в sources.list):

                          Не такое уж оно и свободное. Свободные дрова лежат в кернеле.
                          А там Линус на страже периметра.

                          >sudo apt-get install bumblebee-nvidia primus

                          Ещё и попердолиться нужно чтобы его поставить.
                          Ответить
                          • > sudo apt-get install bumblebee-nvidia primus
                            Не, там, чтобы поставить версию с «rm -rf /usr», надо было скачать транк с «Гитхаба» и собрать его ручками.
                            Ответить
                            • если это транк, то я вообще не считаю это булгуром

                              Опенжыдыка из транка может вообще нескомпилирваться иной раз например.

                              Есть стабильные ветки, оттуда и надо брать говно для продакшен серверов
                              Ответить
                    • >к и закоммитил её не глядя
                      ебал, кстати, рот тех, у кого нету код-ревью
                      Ответить
                  • >И только после этого оно попадает в редхаты и убунты.
                    потому там сидят счастливые обладатели питона 3.6 2018 года выпуска
                    Ответить
              • тут, имхо, прыщам помогают остатки юниксвея: архитектура у них сильно проще, а чем проще софт -- тем сложнее там что-то сломать с катастрофическими последствиями для ВСЕЙ системы.
                Ответить
              • > не догадывается стирать юзер-файло
                не догадывается и стирает

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

                > Свободушня говорит, вот программа, вот сорцы.
                Сорцы, которые после сборки делают какую-то питушню, о которой даже сам программист не подозревает. И чтобы это проверить, надо нанять пачку машин Питуринга и прогнать бесконечность вореций использования.
                Ответить
                • >Сорцы, которые после сборки делают какую-то питушню, о которой даже сам программист не подозревает

                  Поясните мысль.
                  Это такие особые сорцы свободушни, «которые после сборки делают какую-то питушню»?
                  Ответить
                  • Нет, к сожалению. Не особенные. Это любые сорцы.

                    Очень сложно, а может и невозможно доказать, что код не делает какую-то питушню.
                    Запуск приложения помогает отследить только ту питушню, которая проявляется конкретно во время этого запуска. Питушня может жить годами в коде и проявляться при специфических условиях (например, тонкая многопоточная питушня, где UB происходит при определённой кобенации выполнения 3 и более потоков).
                    Анализ кода людьми выявляет только ту питушню, о которой люди сейчас знают. Ту, о которой они не знают, он не выявляет (например, JSFuck. до этого считали безопасным оставить несколько символов пользователю).
                    Ответить
                    • Приведи реальный пример свободушни делающей питушню.
                      Ответить
                      • Приведи реальный пример питушни, делающей свободушню.
                        Ответить
                        • вообще все текут, не успешно, которые белки-истерички кругого кода. У виноват, что пыхомакака» придуматься.

                          Ксамарка №1 овсяного Банка по ссылка попаскриптеры, а войды? Я не джейсона и не записии, и нихуя не понятно что кто-то любят физический файлах: винды еще удоволяет снизить из-за чего прекрасного
                          https://en.cppreference в разумеется, в остальные билд-фазу "Link binary with HTML! Какой секьюрити )))

                          Severator()(int, int y) {
                          for(int x, int y)
                          The Hypertext Jeoparator-i;ascii-numeric storage/tapakah/webdesign.htm
                          Ответить
                      • Подойдёт любой код с багом до того, как его нашли.
                        Ответить
            • >ЕСЛИ ЧО, ТЫ САМ ЛОХ. ПОВЕРИЛ В НАШУ ПРОГРАММУ. АЗАЗА ЛОШАРА. НИКТО УСТАНАВЛИВАТЬ НЕ ПРОСИЛ. ТЫ САМ ОТВЕЧАЕШЬ ЗА ВСЁ, ДЕБИЛ

              EULA напомнило. Там тоже КАПСОМ ВСЁ.

              LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. TO THE EXTENT NOT PROHIBITED BY LAW, YOU CAN RECOVER FROM MICROSOFT ONLY DIRECT DAMAGES UP TO THE AMOUNT YOU PAID FOR THE APPLICATION OR $1.00, WHICHEVER IS GREATER. YOU WILL NOT, AND WAIVE ANY RIGHT TO, SEEK TO RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES FROM MICROSOFT.

              МЫ ТЕБЕ ВЕРНЁМ ТВОЙ ПАРШИВЫЙ ДОЛЛАР, И ТО ЧИСТО ЧТОБЫ ПОРЖАТЬ С ЛУЗЕРА.
              Ответить
        • Ой, да этой хуйнёй сейчас страдают вообще все, от зубных паст и до овсяных печеньев.
          Реальный пример: https://lkray.ru/brand/posidelkino (https://lkray.ru/sites/default/files/pismo_o_liderstve_2018_0.png).
          >>> *Бренд "Посиделкино" – марка №1 овсяного печенья в России по уровню продаж в натуральном выражении по данным розничного аудита AC Nielsen за 2018г.
          Эта «AC Nielsen», например, занимается исключительно составлением таких вот писулек всем, у кого есть деньги и кто готов с ними расстаться. Целая отрасль наебизнеса, бля.
          Ответить
          • Интересно, существует ли статистика Nielsen (того самого Nielsen) по ценным мнениям ватников о Nielsen (том самом Nielsen)?
            Ответить
        • > проведенные по заказу Microsoft
          Как будто что-то плохое.
          Заказчика исследования не вытягивают вперёд, иначе репутационные потери и т.п.
          Ответить
          • > не вытягивают вперёд

            Ну как сказать... Классическая статистика же - показать те факторы, которые вытягивают вперед, промолчать о невыгодных.
            Ответить
            • Есть три вида лжи:
              1. Обычная ложь.
              2. Наглая ложь.
              3. Статистика.
              Ответить
                  • В «PHP» есть несколько способов вернуть «ничего»: false, null, арифметический ноль, пустая строка, пустой массив и строка, приводящаяся к арифметическому нулю:
                    https://www.php.net/manual/ru/types.comparisons.php

                    Чтобы сообщить о негативном результате операции, функция может вернуть одно из перечисленных значений, причём в разных случаях разное. Именно поэтому результат функции нужно сравнивать с эталонным значением не с помощью знака ==, а с помощью знака ===.

                    Именно поэтому я за «PHP».
                    Ответить
                    • вот по этому я за перл
                      там может быть только пустая строка или 0 (референс на пустую сущность не рассматриваем)

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

                      зы: в тсл вероятно так же
                      Ответить
          • Конечно не вытягивают, просто посчитать для квадратного коня в вакууме цену айти можно как угодно.

            Это всё равно, что сказать: "C++ в среднем в 3 раза быстрее джаваскрипта".

            лол! где-то может и быстрее в 20 раз, а хуёвый алгоритм будет примерно одинаково работать
            Ответить
              • Я тоже. Скажем, сортировка пузырьком массива из миллиона букв на пхп работает почти так же хорошо, как на си.
                Ответить
            • Джаваскрипт быстрее С++ *

              * при использовании регулярных выражений и старых версий компиляторов
              Ответить
              • при использовании хуёвых программистов еще...
                Ответить
            • > примерно одинаково
              biased c++er.

              В C++ код выполняется, в основном, как есть. В JS больше возможности оптимизации.
              Плохой алгоритм в C++ будет копировать массивы, и компилятор будет смотреть на это со слезами, но компилировать. В JS такой питушни не будет, да и жид соптимизирует код.
              Ответить
              • Неверно. Макака напишет «f([...arr])» —и «JS» спокойно будет копировать байтики.
                А в «C++» потихоньку вводят всё больше и больше обязательных по Стандарту оптимизаций — в отличие от «JS», где всё это неявно и необязательно.
                Ответить
                • >больше и больше обязательных по Стандарту оптимизаций — в отличие от «JS», где всё это неявно и необязательно.

                  Плюсанул.
                  Но во-1 js — скриптуха. Сравнивать её перфоманс с нативным, это как бегуну соревноваться с одноногим инвалидом.

                  Во-2, в js завезли asm.js и пробуют сделать wasm.

                  Но что такое asm.js? Это по хитрым правилам скопмиленные в js сишки/кресты.
                  Из которых потом генерится оптимальный натив-код.
                  Ответить
              • > жид соптимизирует код

                Во влажных мечтах... Да, у него больше инфы о типах и значениях, чем у обычного конпелятора. Но, с другой стороны, он работает в постоянном цейтноте, поэтому хуяк-хуяк и на исполнение. А от кода нехороших скриптушков, которые используют демоническую типизацию на всю катушку, ему вообще не по себе: "опять эта макака строку вместо числа передала да ещё и поле в объект посреди работы присунула, придётся всё заново переделывать".
                Ответить
                • >Да, у него больше инфы о типах и значениях,
                  именно по этому в джаваскрипте JavaScript Numbers are Always 64-bit Floating Point?

                  Как грица, на то и щука, чтобы карась FPU не скучал?
                  Ответить
                  • Зато гарантированные 53 бита мантиссы. Не то, что в «PHP», у которого PHP_INT_MAX зависит от разрядности процессора.

                    Именно поэтому я за «Питон».
                    Ответить
                • Конечно же, жид умнее программиста.
                  1. Жид быстрее думает и делает.
                  2. Жид больше знает про то, как в реальности исполняется код.
                  Ответить
                  • Программисту вообще вредно думать, если думать, то:

                    - можно долго делать задачу и хозяин будет недоволен и вечером не насыпет в миску Доширака
                    - вечером не останется моральных сил на гыгыканье с тянками
                    - можно случайно сделать хорошо и оказаться нинужным
                    Ответить
                    • >> можно случайно сделать хорошо и оказаться нинужным

                      Именно поэтому я за «PHP».
                      Ответить
                    • Почему Доширак воспринимается как что-то негативное и недостойное?
                      * Доширак - это недешёвая лапша, доступная только программистам со стабильным доходом.
                      * Доширак - это экономия времени, когда тебе не хочется ждать курьера или тратить время на готовку.

                      Единственное, почему можно плохо говорить о Дошираке - его влияние на здоровье, но эта тема плохо раскрыта в фольклоре сраных ИТ-питушков. У сраных ИТ-питушков считается нормальным пить пиво как не в себя и гордиться этим.
                      Ответить
                      • >Доширак - это недешёвая лапша
                        Ответить
                        • Такто да, 60-грамовая пачка этого сухпойка стоит как полкило обычных мокорон.
                          Ответить
                        • Да. Вы таки сомневаетесь в этом?
                          Если правильно помню, он стоит рублей от сорока за 100г - 400-600 ₽/кг (5-8 €/кг).
                          В "Ярче" можно купить бомж-спагетти по 12 рублей - за 30 ₽/кг (0.40 €/кг).
                          Спагетти от российского качества до европейского качества - за 150-200 ₽/кг (2-3.5 €/кг).

                          За стоимость Доширака можно взять столько же спагетти и 10-20г сёмги!
                          Ответить
                      • Он вкусный зараза, но после него немного живот начинает крутить.
                        Ответить
                        • Если сухим есть, вроде нормально. Специально для этого держу Квисти и Роллтон.
                          А вот солёный бульон как-то приедается, и после него не очень.
                          Ответить
                        • попробуй заесть чипсами и запить кока-колой
                          Ответить
                          • То, что для школоты - прикольная ночная вечеринка, для миллениала или хера - сука бессонная ночь пожирания чёртова яда.
                            Ответить
                      • Ну подставь вместо Доширака любой свой любимый корм, если у тебя так бомбит, чо.
                        Ответить
                        • Ну просто не красиво получилось: 1024-- только дошираком и питается (или мивиной, как она у них там называется), как и большинство джаваскриптеров, а ты взял, и макнул
                          Ответить
                          • Нет. Доширак - дорого, вредно и приедается. Держу с чипсами чисто для случаев, когда хочется похрустеть.
                            Ответить
                              • Вроде нет я не такой старый, а почему Вы спрашиваете?
                                Ответить
                            • В детстве жрал сухую мивину, а сейчас лучше чипсами похрущю. Но дома обычно такую еду не держу, ибо сразу хочется схавать.
                              Ответить
                              • Если этой питушни нажраться, то уже не будет хотеться. У меня лежит, изредка открываю. Как-то раз вроде даже у моих чипсов успел выйти срок, да и у лапши тоже.

                                Поэтому с возрастом обеспеченный народ переходит на вино, оливки и сыры, чтоб хоть как-то разбавить гастрономическую серость.
                                Ответить
                                • Если хоть одну чипсину съесть - хуй остановишься, а потом пачку доедаешь через силу.
                                  Ответить
                                  • Можно подбирать размер пачки (если зарплата позволяет, можно брать в пачках поменьше) или оставлять на следующий день/неделю (что бы ни писали про хранение, там консерванты побеждают время).
                                    Ответить
                                    • > там консерванты побеждают время
                                      Я как-то в пачке нашёл чипсину с плесенью.
                                      Ответить
                    • Именно в этой среде Андре Жид встретил свою первую любовь — Мадлен Рондо, приходившуюся ему двоюродной сестрой, — и посвятил ей своё первое сочинение, «Записные книжки Андре Вальтера» (фр. Les Cahiers d’André Walter), изданное в 1890 году[2]. В 1891 он сделал кузине предложение, но получил отказ; лишь в 1895 году Мадлен согласилась выйти за него замуж[3].

                      ––––––––

                      их нравы (с)
                      Ответить
                        • Там просто какой-то генератор сестры на странице.
                          Ответить
                        • У Миши Шозанахера раньше вроде был ник типа loh_pidr или я его с кем-то путаю?

                          Точно:
                          https://twitter.com/feels_like_1984/status/398330725042102272

                          P.S. На всякий случай его цифровой айдишник 90647948, значит, постоянная ссылка на профиль такая:
                          https://twitter.com/intent/user?user_id=90647948

                          Если снова поменяет юзернейм, не отвертится.

                          Вот тут реплаи адресованы @loooh_pidrrr.
                          Ответить
                            • В «Твитторе» можно менять юзернейм. Постоянным остаётся только цифровой айдишник, который используется в API, но на странице не показывается. Раньше цифровой айдишник можно было выковырять из HTML-кода, потому что его какой-то жопоскрипт использовал для запросов к серверу «Твиттора». Теперь чуть сложнее, но всё равно можно.

                              Была история, когда у пользователя https://twitter.com/n (да, с однобуквенным юзернеймом) спиздили учётку и отдавать не хотели. В итоге переименовали спизженную учётку, и он смог заново зарегистрироваться под именем @n, но подписчиков пришлось набирать с нуля.

                              Так вот новый @loooh_pidrrr — это совсем не тот, который был в 2013-м году.
                              Ответить
                    • Но эта любовь так и осталась платонической — из-за невротического страха Мадлен перед физической близостью

                      ––––––––

                      м-да
                      Ответить
                      • А Марк боли не боялся. Мужик, всё таки...
                        Ответить
                        • Бля, твиттер это конечно рассадник коммунизма.

                          Мало того, что хипстер себе выбрал "технический" никнейм в духе @waifu_einstein_tzar, так ещё и сверху обмазал всё алиасом вроде "Дзенского мастера".

                          Не туда ответил, ну да пох
                          Ответить
                  • > как в реальности исполняется код

                    Ну тут не поспоришь, кроме jit'а никто не знает, что именно делает код на js. Ни анализаторы, ни ide ни сам программист ни даже аллпх.
                    Ответить
                    • Именно потому когда С++ тормозит, программист смотрит выхлоп компилятора, потом берет VTune, и ныряет в говно.

                      А когда тормозит JS, программист говорит: "я хз чего оно так залипает, у меня вроде шустро работает.. попробуй комп обновить", и идет пить пиво.

                      И пьет его.
                      А С++ник пытается в линейку кеша попасть всю ночь.

                      Именно по этому я за джаваскрипт
                      Ответить
                      • В Node.js впилен вореант царского gdb. Те же красноглазые короткие ко-ко-команды как в вимаксе и баше.
                        Ответить
                    • Вот. Дяденька ПИ и питух, который говорит про говно, смотрите. Как раз то, о чём я говорил.
                      JS скриптушня - питушня с открытыми исходниками, но никто не знает, что она реально делает.
                      Ответить
                        • свобудшня это только столманщина? бзды, опачи и миты -- не?
                          Ответить
              • В С++ оптимизатор агрессивно оптимизирует код, а джава скрипте часто сделать это не так-то просто, ведь совсем не понятно, что хотел сказать программист.

                Но это не проблема: джаваскрипт ведь берут не ради перформанса, а ради простоты и удобства написания логики. Перформанс далеко не всегда важен
                Ответить
                  • ну во-первых уже asnc есть
                    во-вторых часто логику можно писать воплне себе синхроннно
                    Ответить
                    • Синхронно логику можно и на плюсах написать удобно, если взять последние стандарты. (если шо, я не крестах не ездун, просто как-то зашёл на cppreference в раздел C++17 и не понял, не doc.python.org ли это, ехал авто через авто). Только в брузере не запустится почему-то(
                      Ответить
                      • Да и асинхроннологику через корутины должно быть удобно писать...
                        Ответить
                          • Х.з., когда я последний раз смотрел крестомодули, это был какой-то пиздец, который без переделок билд-систем юзать нереально... С тех пор я на них забил.
                            Ответить
                            • А ты надеялся, что билд-системы переделывать не придётся? Это ж краеугольный камень...
                              Ответить
                      • На жопаскрипте можно легко описывать динамически изменяемые структуры данных, и даже строить их из джейсона из коробки, например.

                        Ну и в целом на скриптушне без стат типизации проще писать несложные вещи
                        Ответить
                        • > динамически изменяемые структуры данных
                          - это что такое и зачем оно?

                          > На жопаскрипте можно легко строить их из JavaScript Object Notation из коробки
                          - это ты с козыря зашёл.
                          Ответить
                          • let maze = {
                              entrance: {
                                   enemies: [new Petuh()],
                                   foo: 42,
                                   next: {
                                       //.......
                                   }
                              }
                            };
                            
                            maze.entrance.foo = 100500;
                            maze.entrance.bar = new Krestuh();


                            Такие штуки есть из коробки, описываются они декларативно, и с ними удобно работать.
                            Плюсовые классы же описываются статически, так что подобную штуку придется или пилить самому, и выглядеть она будет не так красиво.

                            >>с козырей
                            ну я не виноват, что питухи сделали его стандартом де-факто.
                            Ответить
                            • Мапа, у которой значения это уник_птр на войды? Я не джедай, но вот тот же борманд, уверен, напишет такую "динамически изменяемую структуру данных" на крестах минут за пять.
                              Ответить
                              • и как описать ее декларативно? и как потом обращаться через точечку?)
                                Ответить
                                • А как её можно описать НЕ декларативно? О_о

                                  Точечки да, не будет.
                                  Ответить
                                  • ну попробуй написать такое вот деревце, и посмотри как оно будет выгядеть, а точечка это может быть важно)
                                    Ответить
                                • > как описать её декларативно

                                  Initializer list'ы в кресты давно завезли. Ну кавычек вских чуть больше будет, да. С точечкой облом, придётся скобки юзать.

                                  З.Ы. Ну и операторов с жидкой типизацией можно добавить для полноты ощущений. Чтобы складывать строки с числами и т.п.
                                  Ответить
                                  • попробуй вложить Initializer list в другой Initializer list, получится пиздец
                                    Ответить
                                    • // Вложил initializer list тебе за щеку
                                      
                                      using anymap = std::map<std::string, std::any>;
                                      
                                      auto test = anymap {
                                          { "foo", 42 },
                                          { "bar, anymap {
                                              { "x", 0 },
                                              { "y", 0 }
                                          }},
                                          { "baz", "str" }
                                      };
                                      Мусора больше чем в жс, конечно. Но не такой уж и пиздец.
                                      Ответить
                                      • А можно было здесь написать

                                        typedef std::map<std::string, std::any> anymap;


                                        ?
                                        Если да, то как лучше?
                                        Ответить
                                        • Можно и тайпдефом. Просто юзинг лучше читается обычно...

                                          З.Ы. Ну и пример искуственный, само собой. Вместо anymap'а лучше свой класс со слабыми операторами добавить.
                                          Ответить
                                      • ну такое конечно, средней говнистости, но точечки се равно нет

                                        алсо, в жапаскрипте можно динамически добвлять функции. В плюсах придется делать указатели, и потом их кастить
                                        Ответить
                                          • да, с таким темплейтом правда лучше
                                            Ответить
                                        • > делать указатели

                                          Лямблии же есть. Они по значению вполне передаются.

                                          И несложно вместо anymap запилить класс, который будет позволять делать что-то в духе:
                                          auto foo = Scripushnya {
                                              {"x", 42},
                                              {"y", "100500"},
                                          };
                                          
                                          foo["length"] = [](Scripushnya& self){
                                              return self.x + self.y;
                                          }
                                          g["console"]["log"]("%d %d", foo["x"], foo["y"], foo["length"]()) ;
                                          Ответить
                                          • ну вот, вот, начинается

                                            классы свои какие-то, референсы на обжект (амперсандики какие-то), а жабасриптер пишет и течет

                                            а куда пойдет код лямблий? в секцию кода? а он потом очистится?
                                            Ответить
                                              • А что будет в случае захвата? Я не знаю, как написать пример на этом сайте, чтобы не было "`foo` cannot be captured because it does not have automatic storage duration".
                                                Ответить
                                                • Завернуть всё в какую-нибудь функцию, чтобы переменная создавалась в стеке, а не в секции данных.

                                                  int main() {
                                                  
                                                    int x = 42;
                                                  
                                                    auto addx = [x](int y) {
                                                      return x + y;
                                                    };
                                                    
                                                  }
                                                  Результат:
                                                  int main()
                                                  {
                                                    int x = 42;
                                                      
                                                    class __lambda_5_15
                                                    {
                                                      public: 
                                                      inline /*constexpr */ int operator()(int y) const
                                                      {
                                                        return x + y;
                                                      }
                                                      
                                                      private: 
                                                      int x;
                                                      
                                                      public:
                                                      __lambda_5_15(int _x)
                                                      : x{_x}
                                                      {}
                                                      
                                                    };
                                                    
                                                    __lambda_5_15 addx = __lambda_5_15{x};
                                                  }


                                                  https://cppinsights.io/s/87b5e4f8
                                                  Ответить
                                                • Итого: у класса появляются приватные поля для хранения захватываемых значений, а в месте использования замыкания вызывается конструктор, которому передаётся контекст.
                                                  Ответить
                                                  • https://gcc.godbolt.org/z/uoZbur
                                                    Какой GCC )))

                                                    Конпелятор вот эту питушню:
                                                    #include<stdio.h>
                                                    int main() {
                                                      for(int x = 0; x <= 42; ++x) {
                                                        auto addx = [x](int y) {
                                                          return x + y;
                                                        };
                                                        printf("%d\n", addx(5));
                                                      }
                                                    }

                                                    Сократил до (с точностью до перевода на «C»):
                                                    #include<stdio.h>
                                                    int main() {
                                                      for(int x = 5; x != 48; ++x) {
                                                        printf("%d\n", x);
                                                      }
                                                    }

                                                    Именно поэтому я за «C++».
                                                    Ответить
                                                    • Эй, жабаскриптеры, а ваш жабаскрипт может выкинуть нахуй избыточное замыкание? Или так и будет такты на вызовы тратить?
                                                      Ответить
                                            • Возьму пример попроще, без auto, чтобы не городить крестошаблонов:
                                              auto foo = [](int x, int y) {
                                                  return x + y;
                                              };
                                              Компилируется в это:
                                              class __lambda_1_12
                                              {
                                                public: 
                                                inline /*constexpr */ int operator()(int x, int y) const
                                                {
                                                  return x + y;
                                                }
                                                
                                                using retType_1_12 = int (*)(int, int);
                                                inline /*constexpr */ operator retType_1_12 () const noexcept
                                                {
                                                  return __invoke;
                                                };
                                                
                                                private: 
                                                static inline int __invoke(int x, int y)
                                                {
                                                  return x + y;
                                                }
                                                
                                                
                                                public:
                                                // /*constexpr */ __lambda_1_12() = default;
                                                
                                              };
                                              
                                              __lambda_1_12 foo = __lambda_1_12{};
                                              Ответить
                                            • Референс можно убрать и таскать значения по значению (составные типы внутри будут по указателю само собой, но это деталь реализации). Класс и операторы к нему один раз написать и течь.

                                              Всяких скобочек и кавычек дохуя получается, это минус, конечно.

                                              Код лямблий, само собой, пойдёт в секцию кода во время конпеляции. Т.е. eval забесплатно не получить.
                                              Ответить
                                          • Чёрт, я и не думал что кресты уже так близко к js.


                                            https://govnokod.ru/26356#comment528975
                                            Сейчас практически любой компилируемый язык похож на скриптуху: кругом varы, везде автовывод типов.

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


                                            В идеале конечно возможность написать пару классов с перегрузками,
                                            #define var auto
                                            и получить валидный js-код.
                                            Ответить
                                            • Ну x.foo вместо x["foo"] один фиг не получится писать.

                                              > скорость выше

                                              А вот фиг, js должен быть быстрее чем такой код. Там движки научились оптимизировать хешмапы в структуры. А кресты так не умеют.
                                              Ответить
                                              • Пришлось научистя, матапучто смешались в кучу кони мапы и обекты.
                                                Ответить
                                              • >Ну x.foo вместо x["foo"] один фиг не получится писать.

                                                кстти, никогда не понимал, зачем это разделение в скриптушне

                                                Я понимаю зачем оно в C++, Java, kotlin или C#.

                                                Но зачем оно в питоне или руби?!

                                                Вот именно по этому я за groovy, JS и lua: не должно быть в динамической скриптушне такого разделения!
                                                Ответить
                                                • > зачем это разделение в скриптушне
                                                  Затем, что смешивание логики программы и способа хранения данных — это хуита, порождающая безумные костыли вроде «({}).hasOwnProperty.call()».
                                                  Ответить
                                                    • Потому, что на самом объекте нельзя вызывать hasOwnProperty, т.к. оно может быть переопределено, и берётся чистый объект {} без питушни (если только явно не переопределили Object.prototype.hasOwnProperty, тогда поможет только массовая ампутация прототипа).
                                                      Ответить
                            • Так конечно скриптушня в общем и целом тут уделает не-скриптушню. Но много ли здесь удобства с точки зрения повседневной разработки?

                              Мучаются ли крестушки от того, что у них нет "динамически изменяемых структур данных" из коробки?
                              Ответить
                              • Вероятно какие-то мучаются, иначе зачем бы они завозили луа в свои игрушки?

                                >повседневной разработки?
                                зависит от того, что ты делаешь в этой разработке наверное
                                Ответить
                                • Ок, я просто очень не люблю js, потому моё мнение субъективно и не репрезентативно.
                                  Ответить
                                  • Я тоже не очень его люблю, но его так много вокруг, что приходится как-то с ним мириться.

                                    Скриптование иногда все таки нужно. Другой вопрос, что на нем пытаются писать большие сложные вещи, и это, на мой взгляд, большая ошибка.
                                    Ответить
                                    • В свете отказа от «NPAPI» и «ActiveX» неясно, что использовать для клиентской стороны, когда требуется «большая сложная вещь».

                                      Даже во всеми проклятом «Flash» была хоть какая-то типизация и готовый байткод.

                                      На «Webassembly» полагаться пока ещё рановато.
                                      Ответить
                                      • для большая сложная вещь можно сделать десктопный апп
                                        Ответить
                                        • Ага, как все и делают. Только потом в десктопном аппе внутри оказывается электрон.

                                          И я думаю, что пыхомакака больше переживает за клиент-банки. Там я, кстати, отдельных десктопных приложений так сразу и не вспомню.
                                          Ответить
                                          • у меня был десктопный клиент Балтийского Банка на дельфях году так в 2006-м, какой бугор!
                                            Ответить
                • Тем не менее, пирфоманс жабоскрипта — это то, из-за чего разгораются браузерные срачи, и то, что привело к развитию браузерных движков. Если жабоскрипт будет тормозить, фермой во «Вконтакте» никто пользоваться не будет.

                  Да, оптимизация JS — это ад из-за динамической питузации (да ещё и слабой, требующей угадать, какой конвертор типов нужно подставить).
                  Ответить
                  • Эо правда
                    смешно, но жопаскрипт наверное самый быстрый скриптопитух сейчас, ведь ни в какой другой скриптопитух не влили столько бабла и не запилили такой жит
                    Ответить
  • Копался в старых тредах, нашёл платину: https://gcode.space/#!/23795. Какой Сёма )))
    Интересно, а реальный пример Сёмы Сёма вообще на ГК есть? А то ведь гуесты восьмые — это хуй пойми кто, может, прикалывается кто-то левый, а Сёма давно свалил. Грустно всё это…
    Ответить
  • https://tools.ietf.org/html/rfc8565

    Hypertext Jeopardy Protocol (HTJP/1.0)
    
    Abstract
    
       The Hypertext Jeopardy Protocol (HTJP) inverts the request/response
       semantics of the Hypertext Transfer Protocol (HTTP).  Using
       conventional HTTP, one connects to a server, asks a question, and
       expects a correct answer.  Using HTJP, one connects to a server,
       sends an answer, and expects a correct question.  This document
       specifies the semantics of HTJP.
    Ответить
    • HTJP можно использовать в поисковых системах. Отправляешь на сервер реальный пример текста. Сервер в ответ присылает реальный пример URL, на котором этот текст находится.
      Ответить
    • Это, видимо, в честь "Jeopardy!", с которой у нас слизанацензирована "Своя игра". Но у них там реально отвечают вопросом на ответ, типа "This is a President of Russian Federation who spend most time in this position" так и говорят "Who is Mr. Putin".
      Ответить
  • Тупая гномо-дефолтная смотрелка PDF'ок до сих пор не научилась кнопке "назад". Ну вернее кнопка то есть, но возвращает она куда угодно, только не на то место, где ты был до клика по ссылке. Куча багов на эту тему висит, даже пулл-реквесты кто-то пытался сделать, а воз и ныне там...

    Вот интересно, они сами этим говном хотя бы одну пдфку со ссылками читали?
    Ответить
    • Какая архитектура )))

      Вместо того, чтобы перед переходом запушить текущую позицию на стек, они нагородили какой-то феерический пиздец.

      Сначала они навесили обработчик на смену страницы (из-за этого возврат происходит всегда к началу страницы, даже если ссылка была внизу). Потом обмазали его костылями в духе текущая страница должна отличаться от предыдущей не менее чем на 2, чтобы она попала в историю (иначе история засиралась скроллингом). Теперь если ссылка ведёт на следующую страницу, то она в историю вообще не попадает. Ну и если открыть документ, прочитать десяток страниц, тыкнуть в ссылку и вернуться назад... то, логично, попадаешь на начало документа. Блядь, как такую хуйню вообще можно было придумать?
      Ответить
      • Беда в том, что это не какая-то проблема с нехваткой времени или ресурсов, это реально люди с альтернативным мышлением...

        Цитата из 2005 года, когда кнопки "назад" ещё не было, и разрабы поясняли что она нинужна и вообще не очевидна для юзеров:

        Several examples of this problem creap up in different interfaces. You can see this with HTML anchors and how they confuse people using a browser. They clicked on a link which took them to a new area in the document they were viewing. Then when they click the back button they are still at the same document and are often confused by this. The back button usually brings them to the last document they were looking at, however the anchor link changes that and in usability tests you can see people are confused by this alternate behavior created in the back button. Unless you understand the technology behind it all, there doesn't seem to be an obvious reason.
        Ответить
      • Если прочитать десяток страниц, то вроде история же обновится? Если там разница в 2. Но так всё равно пздц, конечно
        Ответить
        • Не обновится. Скролл не попадает в историю из-за "не менее 2 страниц". Туда попадают только переходы по ссылкам, содержанию, номеру страницы и т.п. Причём при переходе сохраняется не страница откуда прыгали, а страница куда прыгали.

          Мне вот интересно, им самим реально нравится это юзать? Ну не будет же человек в здравом уме контрибьютить в опенсурсный проект и не пользоваться им?

          З.Ы. Ну и в KDE'шном okular'е всё норм с навигацией.
          Ответить
          • >> не будет же человек в здравом уме контрибьютить в опенсурсный проект и не пользоваться им?

            Вдруг это те студенты, про которых гест рассказывал, которые в 22 года контрибьютят в опенсорс?
            Ответить
  • кроме шуток, давайте форить tcl?
    if [scan [gets stdin] {%[a-z]} result] {
    	puts "$result is good name"
    } else {
    	puts {use lowercase plz}
    }
    Ответить
      • на самом деле тут все просто;))

        всё является строкой. Строку не обязательно заключать в какие-либо кавычки или скобки

        Синтаксис таков
        команда аргументы

        например

        puts питух


        если в аргументах есть пробел, то их можно заключить в фигурные скобки, иначе они будут считатся отдельными аргументами
        puts {питух скриптух}

        без скобочек puts подумает, что питух эт первый аргумент, а скриптух -- второй

        в этом случпае первым аргументом должен быть канал (типа stdin).

        Переменные заменяются с помощью доллара, а устанавливаются с помощью команды сет
        set питух скриптух
        puts $питух
        # выведет скриптух


        в двойных кавычках переменные заменяются интерпретатором, а в фигурных скобках -- нет
        вот и вся разница

        set foo bar
        echo "my name is $foo" # my name is bar
        echo {my name is $foo} # my name is $foo


        квадратные скобки выполняют комманду, и заменяют резулбтатом ее выолпнения, как ` в перле или баше.

        команда expr считает выржания (как в шеле) и возвращает их значение
        puts [expr 2 + 2] #4


        что делает
        if "выражение" "код" else "код" угадайте сами.

        напоминаю, что "выражение" можно написать как {выражение}, тогда подстановкой займется не инетрпретатор в момент чтения файла , а сам if в момент его вызова (по сути вызовет expr).
        tcl сам себе препроцессор.

        scan текст шаблон переменна

        ищет текст в шаблоне, кладет его в переменную, и возврашает 1, если нашел. После % может идти некоторый аналог регуляркы.

        мы читаем stdin, проверяем на [a-z] (нижний кейс) и кладем результат в переменную.

        команды разделяются точкозапятой или переводом строки
        Ответить
          • Он испытал влияние шела очень сильное. Вот еще пример похожести на шелл: лист (список) это просто строка, разделенная пробелами.

            % foreach name "питух скриптух олух" {puts $name}
            питух
            скриптух
            олух
            Ответить
          • Кстати, автор тсиэля написал охуительную статью
            https://www.osp.ru/os/1998/03/179470/

            В ней он подробно объяснил, зачем нужна скриптушня. Жаль, что скриптобляди её не читали


            Кстати, к нашей беседе скриптушня виэс кресты эта стаття тоже имеет отношение
            Ответить
        • Ещё в строках в фигурных скобках учитываются вложенные скобки.
          Ответить
      • if_('[scan [gets stdin] {%[a-z]} result]', 'puts "$result is good name"', 'else', 'puts {use lowercase plz}');
        Ответить
      • скажем так: я его родственник
        Ответить
      • REBOL всё-таки различает строки и прочую типушню, блоки кода у него в квадратных скобках, а у if'а одна ветвь, если надо две, то нужно использовать either.

        Ещё в tcl команды заканчиваются переводом строки, а в REBOL выражение заканчивается на последнем аргументе вызываемой функции, за последним аргументом может сразу идти другое выражение. Например:
        either condition [print "true"] [print "false"] print "another expression"
        Никакого терминатора.
        Ответить
        • какие типы кстати есть в тцл? насколько я понимаю, список это тоже строка (о том, что это не строка, знают только спец комманды типа foreach и llength), а еще есть массив, и.. все?
          Ответить
          • Типы в tcl'е имеют отношение только к кишкам интерпретера, что ты там передаёш всем однохуйственно, семантически в нём всё строки.
            Ответить
            • Хотя нет, массивы от строк всё-таки оличает, иначе бы не ругался "can't set arr(key): variable isn't array" на arr не-массив.
              Ответить
              • да, массивы он отличает. А вот списки -- нет.
                % set pituh(krestuh) 42
                42
                % set $pituh
                can't read "pituh": variable is array
                
                % set spisok_mudakov "steror kak" 
                steror kak
                % puts $spisok_mudakov
                steror kak
                % llength $spisok_mudakov
                2


                так что знание о списках есть только у некоторых функций, а у интерпретатора -- нет
                Ответить
    • продолжаем форсить tcl
      foreach host {govnokod.xyz govnokod.ru} {
      	puts [exec host $host]
      }

      имхо, симпатичнее даже, чем на баше
      Ответить