- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
function make_json($array){
$json = '{';
$pairs = array();
foreach($array as $key=>$val){
if (!is_numeric($val)) { $val = "'{$val}'"; }
$pairs[] = "{$key}: $val";
}
$json .= implode(', ', $pairs);
$json .= '}';
return $json;
}
pedarok 09.08.2016 17:09 # −15
guesto 10.08.2016 02:01 # −14
guest 06.09.2016 01:30 # −16
(c) json_encode()
guest 11.10.2016 11:51 # −13
- "Кодировка, в старых версиях" - ответ бывалого)))
den_rad 03.04.2017 11:43 # 0
kurwa-nextgen 11.10.2016 12:28 # 0
roman-kashitsyn 11.10.2016 12:31 # +1
roman-kashitsyn 11.10.2016 13:47 # +2
Удобные библиотеки завезли, не завезли удобного способа их подключать.
kurwa-nextgen 11.10.2016 16:34 # 0
bormand 11.10.2016 16:42 # −15
Жопа начинается, когда системы сборки либы и твоего проекта не совпадают... Вроде и либа есть, а поюзать - хуй.
barop 11.10.2016 16:46 # −16
bormand 11.10.2016 16:49 # −16
Их нынче только для hello world юзают, не переживай...
> инклудгарды
А в чём там магия? После первого втыкания куска текста тупо взводится переменная и второй раз этот кусок уже не втыкается. Если имена этих переменных не повторяются - никаких проблем с гардами нету.
CrashTesterAnusov 11.10.2016 16:50 # −65
barop 11.10.2016 16:51 # −16
Да ну ладно) Их много где юзают. Просто вместе с autoconf всякими.
Короче в сишечке реализовать модульность можно, но вручную, с бубном, но можно же.
>>А в чём там магия?
Да я не в том смысле что это магия, а в том что это бесконечно прекрасно.
Потому что у пыховцев до сих пор нет красивого способа переиспользования кода за пределами фреймворка
kurwa-nextgen 11.10.2016 16:58 # −1
Это называется "используют autoconf", и не вместе, а вместо. То что система сборки генерирует мейкфайлы - это детали реализации.
barop 11.10.2016 16:59 # −16
важно что ./configure && make работает
и пофиг кто писал мейк файл -- программист или скрипт
kurwa-nextgen 11.10.2016 17:08 # 0
barop 11.10.2016 17:27 # −15
kurwa-nextgen 11.10.2016 17:34 # 0
barop 11.10.2016 17:45 # −15
Тебе ниже уже объяснили что проблема не решаема нигде.
roman-kashitsyn 11.10.2016 17:51 # 0
Что значит не решаема нигде? В любом пистоне/раби/жабе можно в setup/гемфайле/pom.xml написать, какие библиотеки каких версий тебе нужны, и всё будет автоматом загружаться и устанавливаться. Написал пару строк в конфиге — можешь юзать либу. В go вообще можно тупо импорт написать, сборщик последнюю версию скачает из интернета.
С сишкой в 99.9% случаев нужно будет вендорить и писать собственный билд под каждую зависимость.
barop 11.10.2016 18:08 # −15
А теперь прокрути на три сообщения ниже и почитай про psycopg в питоне и про jar hell в джаве с кучей разных juit в classpath.
roman-kashitsyn 11.10.2016 19:27 # 0
То, что софт становится трудно переносить, если вдруг приходиться вляпаться в сишку, не означает, что 99% остальных либ не работает как надо.
guestinho 11.10.2016 19:44 # −15
Но не нужно. Сначала все сорцы конпелируют, а потом скопом линкуют - зависимостей нет.
CrashTesterAnusov 11.10.2016 17:00 # −64
roman-kashitsyn 11.10.2016 17:45 # +1
phar, composer?
barbarbar 10.04.2017 15:56 # 0
CrashTesterAnusov 11.10.2016 16:50 # −64
kurwa-nextgen 11.10.2016 16:51 # −1
kurwa-nextgen 11.10.2016 16:51 # −1
CrashTesterAnusov 11.10.2016 16:55 # −63
barop 11.10.2016 16:56 # −16
barop 11.10.2016 16:58 # −16
Потом сделать #include<libудобнаябиблиотека.h>
и потом передать сборщинку -lудобнаябиблиотека
?
bormand 11.10.2016 17:05 # −14
В винде.
Ну и мейнтейнеры дистриба не всегда положат тебе нужную версию удобной библиотеки.
barop 11.10.2016 17:28 # −15
В таком случае никакой ЯП не решает приведенных тобою проблем.
kurwa-nextgen 11.10.2016 17:39 # 0
barop 11.10.2016 17:44 # −15
А потом расскажи как он "поставит в независимо от дистрибутива".
bormand 11.10.2016 17:47 # −15
barop 11.10.2016 18:06 # −15
Мавен, градл, зависимости, никакого нативного кода.
А знаешь что бывает когда у тебя три либы зависят от трех разных junit?
У тебя в класс пасе оказывает три разных junit. Догадываешься что потом бывает?
bormand 11.10.2016 18:08 # −15
Класс пас - говно. Как и любая другая идея о path (path, library path, inclede path и т.п.).
roman-kashitsyn 11.10.2016 18:30 # +1
Не оказывается. maven/gradle и прочие смотрят весь граф зависимостей и выбирают одну версию каждой либы. Если у тебя в classpath оказалось три разных версии — ССЗБ.
roman-kashitsyn 11.10.2016 17:59 # +1
У проблем с установкой на венду postgres-клиента питона и какого-нибудь lxml одинаковый источник — отсутсвие возможности нормально переиспользовать сишные библиотеки, на которых основаны змеиные реализации.
bormand 11.10.2016 18:05 # −15
Скорее всего не сильно.
barop 11.10.2016 18:14 # −15
bormand 11.10.2016 18:16 # −15
roman-kashitsyn 11.10.2016 18:35 # 0
Переписали уже и не раз:
http://python.projects.pgfoundry.org/
https://pypi.python.org/pypi/pg8000
Никаких системных либ не надо. Замеры производительности искать лень, но на исходя из здравого смысла должно быть пофигу, ибо сеть.
Зато в теории в пистоне можно более удобную асинхронную версию драйвера написать.
bormand 11.10.2016 18:38 # −15
Ну психопг2 вроде как умеет несколько параллельных запросов по одному сокету (что подразумевает неблокирующие запросы). Так что на нём тоже можно асинхронную версию слепить.
barop 11.10.2016 18:05 # −15
bormand 11.10.2016 18:09 # −15
kurwa-nextgen 11.10.2016 17:10 # 0
Это конечно не проблема, потому что есть системы сборки, которые сами все найдут и в опции компилятора добавят, но ты об этом не сказал. Мне почему-то кажется, что ты на практике не делал сборку для чего-то крупнее хеловорлда.
barop 11.10.2016 17:23 # −15
Мне почему-то кажется что ты на ЛОРе начитался что "сишечка говно" и повторяешь эту чушь как попугай
kurwa-nextgen 11.10.2016 17:31 # 0
bormand 11.10.2016 17:32 # −15
Не просто говно, а говно, которое генерит говно на основе говна сгенерённого говном, генерящее говно на основе говна...
З.Ы. Но более переносимого говна, чем автоконф, походу, не существует.
roskomgovno 13.06.2018 22:24 # 0
После чего make install все сама делает: и компилит с правильным include и линкует и маны инсталлирует.
Такая же есть для портов.
Разумеется, работает только на той ОС, для коей сделано: не переносимо даже между openbsd и freebsd
roman-kashitsyn 11.10.2016 17:34 # +2
Причём редкостное.
bormand 11.10.2016 17:24 # −15
> убунточке
А в штабильном дебьяне вообще какое-нибудь говно 5 летней давности будет лежать вместо ожидаемой версии...
kurwa-nextgen 11.10.2016 17:30 # +1
bormand 11.10.2016 17:40 # −15
roman-kashitsyn 11.10.2016 17:42 # 0
Более того, в разных релизах бубунточки пакеты могут называться по-разному или иметь разную структуру. Например, в новом релизе кто-нибудь может решить разбить один пакет на 2 или 3. Мы писали софт под определённый дистрибутив и платформу, и всё равно огребали кучу работы каждый раз при миграции на новый LTS.
autoconf/cmake может помочь найти хедеры и собранные либы, но до этого их надо, очевидно, собрать и установить. Если пишешь какой-нибудь опенсорс, это норм, пакетные менеджеры разрулят.
А если хочется герметичных и воспроизводимых сборок — только вендоринг и написание собственных билд-скриптов для каждой зависимости.
3.14159265 13.06.2018 18:56 # 0
Расскажи поподробнее.
Меня удивляет как в 201х можно написать софт непортируемый между убунтами.
roskomgovno 13.06.2018 19:01 # 0
3.14159265 13.06.2018 22:39 # 0
Всё-таки интересно услышать реальные примеры.
roskomgovno 13.06.2018 22:42 # 0
За примерами к Роману
3.14159265 13.06.2018 22:53 # 0
roskomgovno 13.06.2018 22:54 # 0
Ну слушай, между LTSами вполне может случиться чото: например могут openssl заменить на libressl или хедеровые файлы могут переехать
3.14159265 13.06.2018 22:56 # 0
sudo apt install openssl
Или какой толк от этой убунты? Проще тогда на слаке сидеть и в билд-скрипте херачить для каждой нужной либы
>хедеровые файлы могут переехать
Тут да.
roskomgovno 13.06.2018 23:01 # 0
Скачивают порты у BSD и всякие арчи/генты
bormand 13.06.2018 23:02 # 0
roskomgovno 13.06.2018 23:09 # 0
Вишь, отдельно сырцы
https://slackbuilds.org/repository/14.2/desktop/mcwm/
Даже тут написано
https://slackbuilds.org/howto/
Next, download the source of the application
Как ты думаешь -- почему?
3.14159265 13.06.2018 23:12 # 0
roskomgovno 13.06.2018 23:13 # 0
3.14159265 13.06.2018 23:13 # 0
bormand 13.06.2018 23:15 # 0
roskomgovno 13.06.2018 23:17 # 0
Если sha другое значит там что-то испортили.
А если там наживую меняют код в этом таге -- тогда как-то не очень стабильно
bormand 13.06.2018 23:13 # 0
Или мимо пробежит телеграм.
roskomgovno 13.06.2018 23:24 # 0