"PHP" / Говнокод #20078 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
<script>
  var x = [];
  var y = [];
  x = [<?php foreach ($chart as $word => $f) echo "'$word', " ?>];
  y = [<?php foreach ($chart as $f) echo "$f, " ?>];
</script>

JS

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

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

  • Попахивает, но не смертельно. Можно написать чуть красивее:
    <script>
      var x = ['<?=implode('\', \'', array_keys($chart))?>'];
      var y = [<?=implode(', ', $chart)?>];
    </script>

    Хотя этот вариант тоже с душком.

    И да, я надеюсь, что данные отфильтрованы и не содержат кавычек, запятых и прочих разделителей.
    Ответить
      • Ситуация, как с Питоном: если выучить всю стандартную библиотеку, наступает осознание, что писать уже нечего.
        Ответить
        • Ситуация в чистом си - если выучить всю стандартную библиотеку, наступает осознание, что с ней нихуя не напишешь.
          Ответить
          • Ситуация в "PHP": если выучить всю стандартную библиотеку, наступает осознание, что вместо стандартной библиотеки ты выучил какую-то хуйню кучу никак не связанных между собой функций.
            Ответить
          • зато вся стандартная библиотека сишечки помещается у меня в маленькой книжечке Кернигана и Ричи издательства "диалект"
            Ответить
            • вся стандартная библиотека брейнфака помещается у меня ...
              Ответить
                • Интерпретатор языка был разработан настолько, что без труда мог вместить в себя целую стандартную библиотеку...
                  Ответить
                  • Сел как-то интерпретатор языка на стандартную библиотеку
                    Ответить
                    • Всё, теперь и слово "интерпретатор" будет стыдно использовать.
                      Ответить
                      • да, мне тоже больше нравятся компилируемые языки
                        Ответить
                        • > да, мне тоже больше нравятся компилируемые языки

                          Что такое "компилируемый" язык? Что мешает иметь интерпретатор языка, у которого уже есть компилятор? Вы таки не видели интерпретатор сишечки? Как жить без ghci?
                          Ответить
                          • На самом деле - любой язык - это интерпретируемый язык. Только в одних случаях интерпретатор запинается на ворециях, а в других случаях - на кобенациях. А в целом и общем всё в этой жизни итерецируемо и копелируемо и зависит от какой-то скорости. Либо входящей, либо исходящей.
                            Ответить
                          • Это такой яп, большинство реализаций коего компиляторы а не интерпретпторы
                            Ответить
                      • Питоновский интерпретатор был разработан настолько, что мог вместить целого слона. Но некоторые полагали, что это шляпа.
                        Ответить
                        • тут кстати есть один питон-программист, который вместил в себя целую
                          Ответить
            • Она бы поместилась на маленький листик - в виде надписи "си не нужен"
              Ответить
                • 1. Он не мой любимый, я им пользуюсь по инерции. Я раньше и на перле писал, и что?
                  2. Много ты питонов уже написал?
                  Ответить
                  • 1. Ну точнее из того что я знаю он мне пока подходит лучше всего. Но со средствами разработки на винде полный пиздец.
                    Ответить
                • нормальная такая либа

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

                        > консистентная
                        Ага... strncpy и strncat ахуенно согласованы - одна добавляет нолик, вторая - нет. С этими ноликами и n-функциями там вообще шалаш из костылей и изоленты... Ну и всякие strcat'ы возвращают бесполезный указатель на начало вместо няшного указателя на конец. Таймштамп можно сконвертить в локал и утц структуру, а обратно - только из локала...
                        Ответить
                        • Еще была какая-то история с направлением копирования в memcopy и трухвальцем.
                          Ответить
                          • Ну это про мемкопи и меммув. Если источник и приёмник пересекаются - мемкопи факапит буфер в половине случаев. Меммув норм работает, но про него мало кто знает, пока на баг не налетят...
                            Ответить
                            • торвальдс не на шутку пиздился, помню


                              --а они сами пидарасы что нарушили стандарт
                              --да? ты это скажешь юзерам, у которых софт упадет?
                              Ответить
                                • memcopy - копирует память, не проверяет пересечение
                                  memmove - копирует память, проверяет пересечение

                                  Только сишкомудак мог такое придумать.
                                  Ответить
                                  • ой ну ладно

                                    Ты угадай например чем StringBuilder от StringBuffer отличается (это джава)
                                    Ответить
                                    • Один из них устарел и его надо забыть. Но в сишке такая срань на каждом шагу.
                                      Ответить
                                • Флеш неофициальный же, так что рухнуло все у прыщеблядков.
                                  Ответить
                                  • > Флеш неофициальный же

                                    Что?

                                    https://helpx.adobe.com/flash-player/kb/archived-flash-player-versions.html

                                    Flash Player Download Center • Mac OS X 10.6+ (Intel processor)
                                    • Windows XP, Windows Vista, Windows 7, Windows 8.1, Windows 10
                                    • Windows Server 2008
                                    • Red Hat 5.6+
                                    • Open SUSE 11.3+
                                    • Ubuntu 10.04+
                                    Flash Player 11.2.202.223 ̃• Solaris x86 and Sparc
                                    Flash Player 10.1.102.64 • Mac OS X 10.4+ (Power PC processor)
                                    Flash Player 11.1.102.55 • Windows 2000
                                    Flash Player 10.3.183.90 • Mac OS X 10.5
                                    Flash Player 9 • Mac OS X 10.1-10.3
                                    • Windows 98, Windows ME
                                    • Red Hat 3&4
                                    • Novell SUSE 9.x or 10.1
                                    Flash Player 7 • Mac Classic (9 and earlier)
                                    • Windows 95, Windows NT
                                    • Red Hat Enterprise Linux WS v.3 & Red Hat Linux 9
                                    • Sun Java Desktop System 1.0

                                    Даже для помойного ведра (< 4.4) есть официальный.
                                    Ответить
                                      • Посмотрел. Неофициальный Флеш — это Gnash и Lightspark, к которым нельзя серьёзно относиться, ибо они реализуют виртуальную машину не полностью. Тут же был оригинальный адобовский Флеш, который упал, когда в Федоре сменилась glibc.

                                        Разработчики из Adobe решили, что недокументированное поведение memcpy будет сохраняться во всех версиях glibc, поэтому использовали memcpy вместо memmove. Т. е. использовали UB на всю катушку.
                                        Ответить
                                        • Кто-то из вас плохо посмотрел.

                                          >29 сентября 2010 года. Пользователь "JCHuynh" открывает новый баг на сайте Федоры о том, что 64-битный флэш-плагин от Adobe перестал нормально проигрывать mp3-файлы, выдает все время какой-то треск вместо правильного звука. Adobe предоставляет два плагина для Линукса, но "официальный" 32-битный морально устарел и работает на 64-битных системах куда хуже "неофициального" 64-битного - этот последний как раз и начал барахлить.

                                          Вообще действительно, нахуй менять поведение чтобы получить уникальное в зависимости от платформы/положения звезд? Это же раздолье для УБ.
                                          Ответить
                                          • Виноват, статью читал давно, ссылку дал по памяти. Странно видеть термин «неофициальный» для несвободной программы с закрытыми исходниками. Вероятно, имелась в виду так называемая дебаг-версия или бета-версия, которая не рекомендуется для постоянного использования, а рекомендуется только для отладки swf-файлов.
                                            Ответить
                                            • У Адоба одно время был проект Square - переработка плеера для работы с 64-битными компутерами. (На самом деле вместо переработки они писали обертку которая бы позволяла запускать старый 32-битный плеер в 64-битной среде).

                                              Разница между официальными версиями и Square в том, что для официальных версий существует поддержка и пока официально не заявлено, что версия больше не поддерживается, для нее будут бекпортить критические патчи. (Поддержка заключается в том, что баги исправляют). Ну и любую поддерживаемую версию можно скачать (т.е. Адоб будет хостить ее по специальному адрессу). Square версий больше нигде не осталось на сколько я могу судить, проект продержался около полугода, после чего его закрыли.
                                              Ответить
                              • Подход порвальдса - это подход браузеров, в котором 100500 пересекающихся стандартов и хуй вместо кроссплатформенного форыча и модулей.
                                Ответить
                            • Я не помню деталей, в одной из функций там направление копирование - UB, кажется.
                              Ответить
                        • А ещё там замечательные названия юникодных функций, произнося которые, можно случайно призвать дьявола 😉
                          Ответить
                            • Зуб сломал рнр, в котором до сих пор типа данных "юникодная строка" нету. В питоне он хотя бы был.
                              Ответить
                              • в питончике 4 вида строк и это одна из самых страшных болей для перехода с 2 на 3
                                Ответить
                                  • похоже что ты не знаешь даже своего питона

                                    Позволь мне процытироваць:

                                    Combining Python 3 str/bytes with Python 2 unicode/str
                                    So what happens when we somehow combine a Python 3 str/bytes with a Python 2 str/bytes/unicode? Let's think about it.

                                    The future module by Ed Schofield forbids py3bytes + py2unicode, but supports other combinations and upcasts them to their Python 3 version. So, for instance, py3str + py2unicode -> py3str. This is a consequence of the way it tries to make Python 2 string literals work a bit like they're Python 3 unicode literals. There is a big drawback to this approach; a Python 3 bytes is not fully compatible with APIs that expect a Python 2 str, and a library that tried to use this approach would suffer API breakage. See this issue for more information on that.

                                    I think since we have the magical power to change the interpreter, we can do better. We can make real Python 3 string literals exist in Python 2 using __future3__.

                                    I think we need these rules:

                                    py3str + py2unicode -> py3str
                                    py3str + py2str: UnicodeError
                                    py3bytes + py2unicode: TypeError
                                    py3bytes + py2str: TypeError


                                    http://blog.startifact.com/posts/the-call-of-python-28.html
                                    Ответить
                                      • дальше-то что?
                                        у тебя существует несколько видов строк и совершенно нет никакого знания о том, какой тип строки ожидает функция
                                        Ответить
                                        • Что значит "нет никакого знания о том, какой тип строки ожидает функция"? Апидок для чего, блядь?
                                          Ответить
                                          • в апидоке у тебя не будет написано ожидает функция bytes или str (для второго пайтона) и конечно не будет никакого unicode в третьем (потому что там все str)

                                            развели зоопаркбля

                                            хорошо сделано в жабе и c# где все строки изначально были юникодные
                                            Ответить
                                            • Млядь, в обоих есть байтовые и юникодные строки, они по разному называются! Не позорься, анонимка!

                                              >в апидоке у тебя не будет написано ожидает функция bytes или str (для второго пайтона)
                                              Если это реально имеет значение то будет. Скорее всего. Лично помню баг где было не указано.

                                              >хорошо сделано в жабе и c# где все строки изначально были юникодные
                                              Хорошо, никто не спорит. В питоне байтовые литералы еще хранятся в кодировке файла .py. Поменял кодировку - программа сломалась.
                                              Ответить
                                            • > хорошо сделано в жабе и c# где все строки изначально были юникодные
                                              бггг скажи это жабьим проперти файлам
                                              Ответить
                              • В PHP отдельного типа данных нет, но можно пихать UTF-8 в большую часть функций. Есть специальные версии функций для UTF-8 (типа mb_strlen вместо strlen); есть функции, у которых кодировка указывается в аргументе (самый хитрый вариант — регулярки, к которых нужно дописывать суффикс «u», чтобы они догадались, что аргумент в UTF-8).
                                Ответить
                                  • Ага. Квадратные скобочки, как у массива, действуют только для кодировок с фиксированным размером символа (в данный момент для восьмибитных). А для кодировок с переменным размером символа (к которым относится и UTF-8) для поиска n-го символа нужно пробежать все предыдущие. Вырезка произвольного фрагмента из строки становится по сложности такой же, как работа с регулярками.

                                    В PHP6 собирались разработать «широкие» строки, символ которых мог без труда вместить больше восьми битов (кажется, хотели перейти на UTF-16, как в Винде, у которой эмодзи и иероглифы занимают по два места), но PHP 6 так и не вышел. А вышедший PHP 7 — это на самом деле PHP 5.7.
                                    Ответить
                                    • Секунду, так для поиска символа по индексу вообще функции апи есть?
                                      Ответить
                                      • $stroka[5] — шестой символ строки (счёт идёт с нуля) в однобайтовой кодировке.

                                        substr($stroka, 5, 1) — то же самое (можно вырезать даже несколько символов сразу).

                                        mb_substr($stroka, 5, 1, 'UTF-8') — то же самое, но для многобайтовых кодировок. Причём поддерживается не только UTF-8, но и куча других: UTF-16 и UTF-32 (и с большим индейцем, и с маленьким), японские и китайские аналоги Юникода и прочие извращения:
                                        http://php.net/manual/ru/mbstring.encodings.php

                                        Возможно, некоторые функции PHP, выполняющие системные вызовы (типа файловых функций) пропустят не любую кодировку.
                                        Ответить
                                        • Так это надо 'utf8' во все вызовы пихать?

                                          >Возможно, некоторые функции PHP, выполняющие системные вызовы (типа файловых функций) пропустят не любую кодировку.
                                          Но они юникод хоть поддерживают?
                                          Ответить
                                          • > Так это надо 'utf8' во все вызовы пихать?

                                            Можно указать кодировку по умолчанию в ini-файле или вызовом специальной функции один раз.

                                            > Но они юникод хоть поддерживают?

                                            fopen создаёт файл с именем в локальной кодировке. Создать файл с юникодным именем мне не удалось. Ситуация примерно, как с zip-архивами.

                                            Спасает только то, что в типичном приложении на PHP такая возможность обычно не требуется, если только ты на PHP не пишешь панель управления сервером.
                                            Ответить
                                            • >Создать файл с юникодным именем мне не удалось.
                                              Ааааааааааа :))))))))))))))))))))))))))))) 2016 год )))))))))))

                                              А как же nagios?
                                              Ответить
                                              • http://stackoverflow.com/questions/1525830/how-do-i-use-filesystem-functions-in-php-using-utf-8-strings

                                                PHP под Виндой обламывается. Но есть два костыля:
                                                1. Расширение com_dotnet, через которое можно достучаться до объекта файловой системы.
                                                2. Самопальное расширение, выполняющее эту задачу (последняя ссылка).

                                                В Линуксе же можно надеяться, что строка в UTF-8 проканает.
                                                Ответить
                                                • >Under Windows, PHP operates as a "non-Unicode aware program"
                                                  Пиздец. Впрочем, язык был узко заточен под веб.
                                                  Ответить
                                                  • В общем, если к директории ФС сервера имеет доступ только PHP, то это не проблема: можно кодировать имена файлов (транслит, base64, punycode, да хоть тупо набор цифр).

                                                    Проблема возникает, если одну директорию сервера используют сразу несколько программ, и они хотят видеть уникодовские имена файлов.
                                                    Ответить
                                                      • Мне даже кажется, что попытку реализовать поддержку Юникода в PHP6 провалили специально, чтобы программисты ушли с PHP.
                                                        Ответить
                                                    • если к директории ФС сервера имеет доступ только PHP обычно делают имя из хеша, а в базе хранят реальные имена.
                                                      Ответить
                                              • 2019-й год: PHP 7.1 умеет создавать файлы с юникодными именами, PHP 7.0 не умеет.
                                                Ответить
                        • Да, говно и тяжкое наследие, но я говорил не об этом.
                          Вы не встретите в стандартной библиотеке функции htmlentities, правда?

                          На сях хуево и больно писать сложную логику, а после ЯПов со всякими лямбдами и мапами так и вовсе руки опускаются
                          Ответить
                            • вот да
                              слава богу уже ОЧЕНЬ ДАВНО си для этого не используется

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

                                Применение "слябать на коленке сайт-визитку или запилить бложек на готовом движке и все это за 3 копейки или вообще самому можно сделать" никто не отменял.
                                Ответить
                          • Да, на сях хуёво и больно писать...

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

                            З.Ы. Ну зато у нас на сишке не так уныло и однообразно, как у жабистов 😉
                            Ответить
                            • у джавистов тоже есть четыре вида логеров, три вида депенденси инжекторов, шесть видов шаблонизаторов и еще куча всего

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

                          Но то, что не связано со строками, вроде бы сделано хорошо.
                          Ответить
                          • а нефиг на плейнсях серьезно обрабатывать тексты

                            строковый литерал есть, копировать строку можно, форматировать вообще классно (ну правда, printf же всякие хорошие), что не так?
                            Ответить
                            • Ты на си часто писал? Или только лабы?

                              > копировать строку
                              Не забыв выделить под неё буфер. Strdup - не стандарт. И не дай бог тебе надо упихать в буфер фиксированной длины без переполнений....
                              Ответить
                              • >Не забыв выделить под неё буфер.
                                Ну так это в си везде так.
                                Ответить
                              • писал, правда работа со строками ограничивалась в основном printfом результатов

                                так что не так-то?
                                >>Не забыв выделить под неё буфер.
                                ну да, и что? Обычно ты знаешь размер источника, не так-ли?
                                Ответить
                        • gets() не принимает ограничение на размер буфера, и оттого совершенно бесполезен.
                          fgets(), внезапно, принимает.

                          Половина функций не реентерабельна.

                          Хотите получить содержимое каталога? В библиотеке C это невозможно, нужны платформо-зависимые функции.
                          Кстати, поскольку Lua написана на портируемом стандартном C, в стандартной библиотеке Lua тоже нельзя получить содержимое каталога (без вызова сторонних платформо-зависимых программ).
                          Ответить
                    • Я даже не могу сказать, что не так с C, потому что... Окей. Представьте себе, эмм, коробку с инструментами. Набор инструментов. Выглядит нормально, инструменты как инструменты.

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

                      Вы опускаете руку в коробку ещё раз - и не находите там больше ничего.

                      Теперь представьте себе миллионы плотников, использующих такой вот набор инструментов и говорящих вам: «А что не так с этими инструментами? Я никогда не использовал ничего другого и они отлично работают!». И плотники показывают вам, построенные ими дома из деревьев, срубленных отвёрткой без крестовины. Вы стучитесь в дверь, из неё появляется пистолет и стреляет вам в ногу, и они орут на вас за то, что вы сломали их дверь.

                      Вот что не так с C.
                      Ответить
                      • Я даже не могу сказать, что не так с gost, потому что... Окей. Представьте себе, эмм, коробку с инструментами. Набор инструментов. Выглядит нормально, инструменты как инструменты.

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

                        Вы опускаете руку в коробку ещё раз - и не находите там больше ничего.

                        Теперь представьте себе миллионы плотников, использующих такой вот набор инструментов и говорящих вам: «А что не так с этими инструментами? Я никогда не использовал ничего другого и они отлично работают!». И плотники показывают вам, построенные ими дома из деревьев, срубленных отвёрткой без крестовины. Вы стучитесь в дверь, из неё появляется пистолет и стреляет вам в ногу, и они орут на вас за то, что вы сломали их дверь.

                        Вот что не так с gost.
                        Ответить
  • Я тоже когда-то не знал о существовании json_encode 🙂
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8