Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Классический вариант сишного "падсибя". Пытаясь спортировать это гавно, понимаешь, каким огромным шагом вперед была стандартная библиотека сишарпов и питонов.
Не, это я набайтоёбил на основе исходниклв из опенссл (см. выше) по просьбе анонимба.
Там в модуле srp вообще внезапное бейс64 используется - таблица символов совсем другая, и паддинг слева(!). Причем лишние ведущие нули отбрасываются. Видимо числа в таком формате компактнее хранятся...
Вот ещё вариант с list. Причем у меня на компьютере он получается даже (немного) быстрее, чем bytearray. На Ideone - чуть медленнее. http://ideone.com/3bBJT9
Так что отвечаю на вопрос s-a--m: используй list в качестве unicodearray.
Это не совсем то.
Видишь ты код с bytes += bytes2. Если у тебя это где-то начнет выдавать плохую асимптотику, заменяешь bytes на bytearray и все заебись. А теперь вопрос - почему не сделать такое же для юникода?
Плюс в тройке bytes должен вылететь сразу, когда ты попытаешься добавить туда что-нибудь другое, например, юникод, а списке - когда джойнить будешь, и по исключению хуй поймешь где это произошло.
хм... чтобы выявить сложность, надо изменять входной размер (тут фиксированный 1024) и смотреть изменение времени работы в рамках ОДНОЙ реализации, сейчас понятно только что строки медленнее на 1024 элементах при добавлении по одному байту.
> конкатенация для строк оптимизирована
как оптимизирована? можно ссылку?
строки в питоне иммутабельные, как можно оптимизировать их сложение по сравнению с деструктивным буфером?
ненавижу прыщи. Почему этот мир полон прыщей? Так господа мы коммунизм и человекоподобных роботов никогда не построим. Борманд про них только в аниме будет смотреть.
> нельзя распаковывать его 7zip, winrar и т.п. - похерятся симлинки!)
Под виндой собирали? Там симлинки нормально сохранились? На фат разделе это даже не собрать?
> openssl, выполнив в msys'ной консоли
Ну как-то не модно. Нужно было все команды записать через &&. Шучу. Где make install или препаковка перед установкой в пакет?
> Под виндой собирали? Там симлинки нормально сохранились? На фат разделе это даже не собрать?
Не, под виндой tar -xf их тупо пропускает. Зато потом конфигур их пересоздает, если их нет. Так что соберется где угодно.
А жопа с 7z и winrar в том, что они эти симлинки извлекают из tar'а как файл, внутри которого написано имя объекта, на который ссылался симлинк. Конфигур видя эти файлы не заменяет их на копии нормальных. И все ломается.
> Где make install
Вопрос к авторам либы. Думаешь от хорошей жизни ручками копировали файлы от openssl? 🙂
Через гуй — никак. Только консолечка в срачло, только хардкор:
MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение
/D Создание символической ссылки на каталог.
По умолчанию создается символическая ссылка на файл.
/H Создание жесткой связи вместо символической ссылки.
/J Создание соединения для каталога.
Ссылка Имя новой символической ссылки.
Назначение Путь (относительный или абсолютный), на который ссылается
новая ссылка.
Да, кстати, чем отличается /D (симлинк) от /J (джойн)?
Есть ещё вариант — сторонний софт. Виндоюзеры ищут софт для того, что должно быть из коробки.
> замутили и экспортнули
Ну это понятно. Я просто на виндовом set остановился. Меня интересует что значит экспортнули?
С остальными пунктами все ясно... То есть ты настоятельно рекомендуешь собирать под нужный таргет всегда на таргете? А как же всякие телефоны с эплом или андроидом? Не на них же самих собирать. Понятно что с моим последнем примером вопрос больше провокационный, но все же.
> Передали в шелл из которого этот шелл запустили.
Не совсем... Если написать var=val, то переменная будет доступна только текущему шеллу, если экспортнуть - то и все запускаемым из него прогам.
Это же странно. Когда пишешь var=val, то по идеи это должно записываться в таблицу переменных окружения текущего процесса. При этом шел делает форк перед запуском нового дочернего процесса, а значит эта таблица наследуется и в дочерний процесс переменная попасть уже должна.
Судя по описанию выше:
> Передали в шелл из которого этот шелл запустили.
экспорт в текущем шеле приводит к наследованию потомками этой переменной окружения, а в родительском шеле это выглядит как var=val и при этом не наследуется его потомками, все верно? А что будет если я в своём приложении выполню например через stdlib.system var=val или export? Родительский шел что-нибудь узнает?
> не экспортирует переменные окружения предку
Да как он это сделает то? 🙂 Это же было бы страшное колдунство с IPC, да еще и работающее не всегда... Вдруг предок - другой шелл, или вообще не шелл, или тупо сдох...
> script.sh
То есть если я в своем шкрипте напишу только строку EXPORT блабла=бла, то это будет бесполезная лажа и я зря напишал этот шкрипт, тк оно выкинется в помойку по завершению шкрипта? А как это обойти, чтобы из шкрипта вызвать шкрипт и экшпорт в шкрипте-потомке попал в шкрипт предок?
> То есть ты настоятельно рекомендуешь собирать под нужный таргет всегда на таргете?
Если есть такая возможность - да. Ибо кросскомпиляция по определению жопа, с которой не стоит связываться без уважительной причины.
Ну как же так... А я уже хотел уйти в подполье в линух. Достали мингвпроблемы уровня не работает нормально многопоточность или отставание на многоверсий от гцц. Там как раз лямбды с "выводом типов параметров" добавили.
> А сам бинарник curl'а в c:/test/curl-7.36.0/src
А что он там делает? Там же сырцы должны лежать.
> mingw32-make mingw32-ssl-zlib-srp
Это какой-то особый мингевешный мейк mingw32-make и мейк файл он берет из mingw32-ssl-zlib-srp?
А пакеты под линь приходилось собирать? Допустим хочу собрать deb. Например я к своей проге накатал руками мекфайл. Какие там ещё этапы важные? Или там это только начало и мне ещё придется накатать тонну прыщей?
> А что он там делает? Там же сырцы должны лежать.
Ну где собрали, там и лежит 🙂 out of directory build я на винде не рискнул пробовать, да и он может тупо не поддерживаться кривожопыми самодельными конфигуряторами.
> мейк файл он берет из mingw32-ssl-zlib-srp
Это таргет. Файл у мейков задается через -f.
> Допустим хочу собрать deb. Например я к своей проге накатал руками мекфайл. Какие там ещё этапы важные?
Не, там совсем немного - описание, правила сборки и еще немного никому не нужного мусора типа чейнджлогов.
> Если пропихивать - то сборка деба всяко будет для тебя самой простой из проблем 🙂
Вот кстати да. Тоже интересно. Вон в бусте жесткий контроль кода, документации, тесты, ждешь кодеревьювера пару лет и тд. А у этих как? Как они там бюрократничают в андроиде или в репах убунты? В конце концов можно свой репсервер наверное завести, если будет в ихних сильно жестко.
> Чтоо? Там за право аплоада надо платить?
Дык защита от школоты и прочих долбоёбов 😉 Там и так то все засрано, представь что было бы, если бы можно было бесплатно выкладывать...
Один раз в жизни заплатить 20 баксов это разве много? В виндовом маркете вроде как $40 было, тоже по сути копейки. А вот про iOS лучше забудь 😉
> а от тех, кто своим троем 20 баксов в состоянии отбить - кагбе нет
Там вроде бы какой-то робот еще проверяет файлы. Ну и не все юзеры любят ставить проги с правами в духе "отправка SMS" и "чтение SMS".
> в репах убунты?
Есть ещё такая штука - PPA. можно захостить свой репозиторий на сервере бубунты и заливать туда пакеты, потом на любой машине подключать его одной командой. Я себе завёл архивчик.
Там ещё и какая-то дебилизация деабинизация что-бы он раскидывал по нужным папкам файлы. экзешники в одно. конфиги в другое. что-то где-то регистрировать. тригеры какие-то... что там за тригеры такие...
А ещё мне не понятно как он пакетный менеджер деинсталить будет мои файлы. мало ли что я куда напихал...
> Там ещё и какая-то дебилизация деабинизация что-бы он раскидывал по нужным папкам
Опять же - для внутренних нужд - всем похуй. Как удобней так и раскладывай. Можешь вообще в /opt/yourprogram захуярить, если лень читать доки.
> тригеры какие-то
Ну это уже advanced магия, если просто копирования файлов недостаточно, и надо что-то подкрутить после установки/перед удалением.
> А ещё мне не понятно как он пакетный менеджер деинсталить будет мои файлы. мало ли что я куда напихал...
Так он знает куда чего ложил при установке 😉
> Так он знает куда чего ложил при установке
Он слежение что-ли включает со стороны системы за моим инсталятором и записывает обратный лог для деинсталятора? Магия какая-то...
> надо что-то подкрутить после установки/перед удалением.
Типа как в винде 1% установлено обновлений перед загрузкой или перед выключением? Типа на это действие регистрируешь свой обработчик?
В моём мейкфайле вроде что-то собирается на моей конкретной машине, но как при сборке в пакет зафигачить зависимости от библиотек тех что нужно доставить дополнительно? И вообще как линух разруливает зависимости? На каждое приложение напихивает симлинки на файлы нужных версий в зависимости от того какие префиксы передал в мейкфайл приложения?
Дык тут тебе не венда, в которой инсталляторы делают что хотят... Если без триггеров, то максимум что оно сделает при установке - скопирует файлы в указанные места, и всё.
Ну вот например пост-установочный триггер пыхи рестартит апач, чтобы он подсосал новый модуль.
Зависимости пишутся как раз в тех дополнительных файликах. Собирается deb в специальном чистом окружении... Короче читай ман, если ты реально собрался пилить. А если не собрался - то нахуй тебе заморачиваться всем этим 😉
> И вообще как линух разруливает зависимости?
1) при установке тупо не дает ставить конфликтующие пакеты
2) да, у so'шек есть версии в названиях
С файликами понятно, а вот как быть с реальным процессом работы. Как одновременно разные версии библиотек уживаются на одном лине? И почему нужные приложения берут именно нужные версии динамических библиотек или вызывают нужные бинарники?
А... Чистое окружение.. Чеашрутишь на пустую директорию. Типа никаких библиотек не поставлено, они накатываются на чистое окружение и вот у меня уже либа нужной версии в зависимостях. Но это работает только со статическими либами, а как это организовано для динамических? неужели и запускаются в почти чистом окружении о_О
> Как страшно жить... Мне кажется что-то линуксоиды не продумали.
В общем там есть такое соглашение, что либы с одинаковой мажорной версией обратно совместимы. Соблюдать его должен автор либы, не забывая проинкрементить т.н. soname, который вшивается в so'шку. Если не соблюдает - то он пидорас и вообще редиска.
Например у libfuck.so.6.2.4 вшит soname libfuck.so.6. Если следующая версия несоместима - она должна называться к примеру libfuck.so.7.0.1 с soname = libfuck.so.7.
В зависимости бинарников вкомпиливается не полная версия, а тот самый soname. Поэтому если прогу собирали с 6.2.4, то она будет работать и с 6.7.2 и с 6.3.5 (с 6.1.0 она работать не будет, и такую ситуацию не допустит пакетный менеджер: "или крестик сними ставь более старую прогу или трусы надень обновляй либу").
А 6.2.5 и 7.3.5 могут стоять одновременно, не мешая друг другу.
>Тебе нужно что-то повышающее самоуверенность. Скилл не прокачен.(
Только что вы могли наблюдать парадокс Даннинга-Крюгера живьём. Спасибо за внимание.
Обратный пример на этом сайте полагаю тоже все видели.
Где-то была картинка, где один человечек говорит другому "Мне не нравится X", тут подбегает третий, начинает кувыркаться и кричать "ололо, пукан порвало". Я думаю, все поняли, про кого это.
s-a--m 8 дней назад #
Но тебе же так печет пукан от слова прыщееб
anonimb84a2f6fd141 02.05.2013 21:40 #
Блядь, да зашей ты уже себе пукан, что ты им в каждом треде сверкаешь, сучечка. http://govnokod.ru/13413#comment187715
> 1) при установке тупо не дает ставить конфликтующие пакеты
Хз. Вон у меня куча питонов и Qt стоит. Как-то все вместе живут...
> пост-установочный триггер пыхи рестартит апач
А что он из себя представляет на системном уровне? Сигнал посикс? Я кроме названия просто про него ничего не знаю.
А мне тут один линуксоид рассказывал, что линух очень крут и вообще разруливает конфликты версий библиотек через симлинки и позволяет заменять библиотеки которые сейчас используются! тоже посредством симлинков. Это тоже должен я в своем инсталяторе как-то обеспечивать, если допустим мне это понадобится?
А ввобще исчерпывающее объяснение. Спасибо. Глядишь свой пакет соберу. Но нельзя собирать не по правилам. У меня начнется синдром незавершенности. Так что только деабинизация. 🙂
> позволяет заменять библиотеки которые сейчас используются
Это сила и слабость линуха... mandatory lock'ов по умолчанию нет. Поэтому и можно творить такие непотребства как удаление открытых файлов...
Триггер? Да просто набор команд, который надо выполнить в процессе установки.Вроде бы и все...
>Поэтому и можно творить такие непотребства как удаление открытых файлов...
почему непотребство? Замечательная вещь. Особенно, если у тубя открыто что-нибудь, что не хочет освобождать файл. Винда у меня частенько ругалась из-за того, что не могла удалить директории, т.к. они были открыты в других приложениях
> Винда у меня частенько ругалась
У меня в Windows 8 довольно часто не хочет удалять папки из-за того, что кто-то использует служебные файлы типа thumbs.db. Иногда даже только что созданные папки так "застревают". Фиг знает, баг explorerа или вирус какой установился.
Это для школьников. Ну и вроде как пакет то он все равно не формирует и зависимости правильно не проверяет. Случись что посреди установки - откатить уж не удастся.
И вообще если ставить в неправильную папку, типа usr, то как будет работать система версий сошек, о которой выше рассказывал Борманд. Никак вестимо. В результате ничего кроме как откатить кривоустановленую либу ничего путного не удастся.
> как будет работать система версий сошек, о которой выше рассказывал Борманд. Никак вестимо
Всё будет работать 😉 Там есть /etc/ld.so.conf (и соотв. папка /etc/ld.so.conf.d) в которые можно дописать дополнительные папки для поиска либ. По умолчанию там /lib и /usr/lib.
> > мейк файл он берет из mingw32-ssl-zlib-srp
> Это таргет. Файл у мейков задается через -f.
А почему это вообще приходится собирать мингевешным мейком, а не стандартным гнутым? Как это вообще определить?
> А почему это вообще приходится собирать мингевешным мейком
Х.з., в мане по сборке так написано было, я и не стал выпендриваться. А вообще - mingw32-make и make это один и тот же файл. Чем меньше выпендриваешься - тем больше вероятность успеха 😉
>Не, под виндой tar -xf их тупо пропускает. Зато потом конфигур их пересоздает, если их нет. Так что соберется где угодно.
Блин, а зачем тогда писал?
Edit: дочитал
Давайте составим список мудаков и будем им ставить рейтинг, скажем, -3. Давайте составим список хороших людей, и у них всегда будет неотрицательный рейтинг.
Хм, действительно, комментарии обычные.
Видимо, не надо было приходить с войной и топить треды.
> Тема не актуальная, никто туда не заходит
Тут сток смотрят, потому неактуальная тема, куда никто не заходит - это свежий пост на главной с 0 комментариев 🙂
Неправильно. Нужно ещё подписать, что означает направление вверх, вниз, направления под другими углами и направления по нормали к плоскости монитора, а также приблизительные расстояния до цели.
bormand # 0
bormand # 0
guest # 0
gost # 0
guest # 0 ⇈
LispGovno # 0
bormand # 0 ⇈
Там в модуле srp вообще внезапное бейс64 используется - таблица символов совсем другая, и паддинг слева(!). Причем лишние ведущие нули отбрасываются. Видимо числа в таком формате компактнее хранятся...
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
guest # 0
bormand # 0 ⇈
WGH # 0
bormand # 0 ⇈
WGH # 0 ⇈
Вместо buf напрашивается его использовать.
bormand # 0 ⇈
guest # 0 ⇈
WGH # 0 ⇈
bormand # 0 ⇈
WGH # 0 ⇈
bormand # 0 ⇈
Похоже на что-то типа O(N*log(N))... Или я туплю?
WGH # 0 ⇈
http://ideone.com/3bBJT9
Так что отвечаю на вопрос s-a--m: используй list в качестве unicodearray.
guest # 0 ⇈
Видишь ты код с bytes += bytes2. Если у тебя это где-то начнет выдавать плохую асимптотику, заменяешь bytes на bytearray и все заебись. А теперь вопрос - почему не сделать такое же для юникода?
Плюс в тройке bytes должен вылететь сразу, когда ты попытаешься добавить туда что-нибудь другое, например, юникод, а списке - когда джойнить будешь, и по исключению хуй поймешь где это произошло.
WGH # 0 ⇈
roman-kashitsyn # 0 ⇈
roman-kashitsyn # 0 ⇈
как оптимизирована? можно ссылку?
строки в питоне иммутабельные, как можно оптимизировать их сложение по сравнению с деструктивным буфером?
WGH # 0 ⇈
Внизу, где Notes, пункт 6.
В третьем питоне такого примечания нет (чего я не знал), там прямо сказано: Concatenating immutable sequences always results in a new object.
guest # 0 ⇈
WGH # 0 ⇈
http://hg.python.org/cpython/file/4f79c3827adc/Python/ceval.c#l4779
guest # 0 ⇈
str = 'a'
str2 = str
str += 'b'
Чтобы str2 было 'a', а str=ab. Оно проверяет количество ссылок на объект? Оригинально, как лишп, прямо.
А что оно там делает, если 2 ссылки?
WGH # 0
bormand # 0 ⇈
WGH # 0 ⇈
guest # 0 ⇈
guest # 0
Сравните, где лучше читается алгоритм - в версии на си или моей на питоне?
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Там, как оказалось, тот еще квест 😉 В лучших традициях прыщеблядства, как ты его называешь.
Потом на форуме туториал отпишу в отдельной теме, может кому-то еще пригодится.
guest # 0 ⇈
bormand # 0 ⇈
LispGovno # 0 ⇈
LispGovno # 0 ⇈
Под виндой собирали? Там симлинки нормально сохранились? На фат разделе это даже не собрать?
> openssl, выполнив в msys'ной консоли
Ну как-то не модно. Нужно было все команды записать через &&. Шучу. Где make install или препаковка перед установкой в пакет?
bormand # 0 ⇈
Не, под виндой tar -xf их тупо пропускает. Зато потом конфигур их пересоздает, если их нет. Так что соберется где угодно.
А жопа с 7z и winrar в том, что они эти симлинки извлекают из tar'а как файл, внутри которого написано имя объекта, на который ссылался симлинк. Конфигур видя эти файлы не заменяет их на копии нормальных. И все ломается.
> Где make install
Вопрос к авторам либы. Думаешь от хорошей жизни ручками копировали файлы от openssl? 🙂
> пакет?
msm что ли? Какие еще пакеты под виндой?
bormand # 0 ⇈
Потестил еще раз - тупо делает копию файла. Даже на нтфс.
WGH # 0 ⇈
P.S. Но вряд ли это спасёт tar.
guest # 0 ⇈
ЧТОААА?
bormand # 0 ⇈
WGH # 0 ⇈
guest # 0 ⇈
inkanus-gray # 0 ⇈
Да, кстати, чем отличается /D (симлинк) от /J (джойн)?
Есть ещё вариант — сторонний софт. Виндоюзеры ищут софт для того, что должно быть из коробки.
LispGovno # 0 ⇈
> ./config shared
Вроде же обычно configure и что здесь означает shared?
> cp -r include c:/test/openssl-1.0.1g-inst
А что тут происходит?
> export ZLIB_PATH=c:/test/zlib-1.2.8
А тут?
bormand # 0 ⇈
То ты ебанулся. Тут и нативно то еле собирается, а ты еще кросскомпиляцию захотел...
> Вроде же обычно configure и что здесь означает shared?
Вопрос к авторам либы 🙂 shared - то что собирать дллки, а не только статику.
> А что тут происходит?
Рекурсивное копирование, не?
> А тут?
Эм, переменную окружения замутили и экспортнули... Что не так?
LispGovno # 0 ⇈
Ну это понятно. Я просто на виндовом set остановился. Меня интересует что значит экспортнули?
С остальными пунктами все ясно... То есть ты настоятельно рекомендуешь собирать под нужный таргет всегда на таргете? А как же всякие телефоны с эплом или андроидом? Не на них же самих собирать. Понятно что с моим последнем примером вопрос больше провокационный, но все же.
Abbath # 0 ⇈
Сам же и ответил.
LispGovno # 0 ⇈
PS: Как Борманд так быстро отвечает на комментарии? Неужели говнутифи?
guest # 0 ⇈
Передали в шелл из которого этот шелл запустили.
>А как же всякие телефоны с эплом или андроидом? Не на них же самих собирать.
А в чем проблема? Там гектар оперативы и хотя бы двухядерник.
bormand # 0 ⇈
Не совсем... Если написать var=val, то переменная будет доступна только текущему шеллу, если экспортнуть - то и все запускаемым из него прогам.
LispGovno # 0 ⇈
bormand # 0 ⇈
WGH # 0 ⇈
Нет, в случае шелла в окружение это не попадает.
LispGovno # 0 ⇈
> Передали в шелл из которого этот шелл запустили.
экспорт в текущем шеле приводит к наследованию потомками этой переменной окружения, а в родительском шеле это выглядит как var=val и при этом не наследуется его потомками, все верно? А что будет если я в своём приложении выполню например через stdlib.system var=val или export? Родительский шел что-нибудь узнает?
bormand # 0 ⇈
Нет конечно. Передача односторонняя.
Ибо передавать переменные окружения от детей к родителям несекурно и ненадежно. Получилась бы херня на порядок опасней чем register globals в php.
P.S. А вот от передачи каких-нибудь структурированных результатов помимо stdout и exit code я бы не отказался 😉
LispGovno # 0 ⇈
bormand # 0 ⇈
Да как он это сделает то? 🙂 Это же было бы страшное колдунство с IPC, да еще и работающее не всегда... Вдруг предок - другой шелл, или вообще не шелл, или тупо сдох...
guest # 0 ⇈
bormand # 0 ⇈
Дык баты исполняются в том же шелле...
Линупсовый аналог такого режима будет source script.sh вместо script.sh.
guest # 0 ⇈
bormand # 0 ⇈
Ну да. Причем тот, который указан в шабанге запускаемого скрипта.
LispGovno # 0 ⇈
То есть если я в своем шкрипте напишу только строку EXPORT блабла=бла, то это будет бесполезная лажа и я зря напишал этот шкрипт, тк оно выкинется в помойку по завершению шкрипта? А как это обойти, чтобы из шкрипта вызвать шкрипт и экшпорт в шкрипте-потомке попал в шкрипт предок?
bormand # 0 ⇈
Только через source child.sh. Больше никак.
bormand # 0 ⇈
Если есть такая возможность - да. Ибо кросскомпиляция по определению жопа, с которой не стоит связываться без уважительной причины.
LispGovno # 0 ⇈
LispGovno # 0 ⇈
А что он там делает? Там же сырцы должны лежать.
> mingw32-make mingw32-ssl-zlib-srp
Это какой-то особый мингевешный мейк mingw32-make и мейк файл он берет из mingw32-ssl-zlib-srp?
А пакеты под линь приходилось собирать? Допустим хочу собрать deb. Например я к своей проге накатал руками мекфайл. Какие там ещё этапы важные? Или там это только начало и мне ещё придется накатать тонну прыщей?
bormand # 0 ⇈
Ну где собрали, там и лежит 🙂 out of directory build я на винде не рискнул пробовать, да и он может тупо не поддерживаться кривожопыми самодельными конфигуряторами.
> мейк файл он берет из mingw32-ssl-zlib-srp
Это таргет. Файл у мейков задается через -f.
> Допустим хочу собрать deb. Например я к своей проге накатал руками мекфайл. Какие там ещё этапы важные?
Не, там совсем немного - описание, правила сборки и еще немного никому не нужного мусора типа чейнджлогов.
LispGovno # 0 ⇈
bormand # 0 ⇈
Если для себя - то все это нинужно.
Если пропихивать - то сборка деба всяко будет для тебя самой простой из проблем 🙂
LispGovno # 0 ⇈
Вот кстати да. Тоже интересно. Вон в бусте жесткий контроль кода, документации, тесты, ждешь кодеревьювера пару лет и тд. А у этих как? Как они там бюрократничают в андроиде или в репах убунты? В конце концов можно свой репсервер наверное завести, если будет в ихних сильно жестко.
bormand # 0 ⇈
В гуглплей - платишь 20 баксов и распространяешь что хочешь 😉 Пока твою учетку не выпилят за вирей отправлялки смс и детский прон.
> в репах убунты?
Вроде как довольно жестко. Но полегче чем в бусте.
LispGovno # 0 ⇈
Вирусы.
guest # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Дык защита от школоты и прочих долбоёбов 😉 Там и так то все засрано, представь что было бы, если бы можно было бесплатно выкладывать...
Один раз в жизни заплатить 20 баксов это разве много? В виндовом маркете вроде как $40 было, тоже по сути копейки. А вот про iOS лучше забудь 😉
guest # 0 ⇈
bormand # 0 ⇈
Там вроде бы какой-то робот еще проверяет файлы. Ну и не все юзеры любят ставить проги с правами в духе "отправка SMS" и "чтение SMS".
roman-kashitsyn # 0 ⇈
Есть ещё такая штука - PPA. можно захостить свой репозиторий на сервере бубунты и заливать туда пакеты, потом на любой машине подключать его одной командой. Я себе завёл архивчик.
LispGovno # 0 ⇈
> на сервере бубунты
ЭЭэ. Апстор бубунты или убунту ван?
Abbath # 0 ⇈
LispGovno # 0 ⇈
А ещё мне не понятно как он пакетный менеджер деинсталить будет мои файлы. мало ли что я куда напихал...
bormand # 0 ⇈
Опять же - для внутренних нужд - всем похуй. Как удобней так и раскладывай. Можешь вообще в /opt/yourprogram захуярить, если лень читать доки.
> тригеры какие-то
Ну это уже advanced магия, если просто копирования файлов недостаточно, и надо что-то подкрутить после установки/перед удалением.
> А ещё мне не понятно как он пакетный менеджер деинсталить будет мои файлы. мало ли что я куда напихал...
Так он знает куда чего ложил при установке 😉
LispGovno # 0 ⇈
Он слежение что-ли включает со стороны системы за моим инсталятором и записывает обратный лог для деинсталятора? Магия какая-то...
> надо что-то подкрутить после установки/перед удалением.
Типа как в винде 1% установлено обновлений перед загрузкой или перед выключением? Типа на это действие регистрируешь свой обработчик?
В моём мейкфайле вроде что-то собирается на моей конкретной машине, но как при сборке в пакет зафигачить зависимости от библиотек тех что нужно доставить дополнительно? И вообще как линух разруливает зависимости? На каждое приложение напихивает симлинки на файлы нужных версий в зависимости от того какие префиксы передал в мейкфайл приложения?
bormand # 0 ⇈
Ну вот например пост-установочный триггер пыхи рестартит апач, чтобы он подсосал новый модуль.
Зависимости пишутся как раз в тех дополнительных файликах. Собирается deb в специальном чистом окружении... Короче читай ман, если ты реально собрался пилить. А если не собрался - то нахуй тебе заморачиваться всем этим 😉
> И вообще как линух разруливает зависимости?
1) при установке тупо не дает ставить конфликтующие пакеты
2) да, у so'шек есть версии в названиях
LispGovno # 0 ⇈
А... Чистое окружение.. Чеашрутишь на пустую директорию. Типа никаких библиотек не поставлено, они накатываются на чистое окружение и вот у меня уже либа нужной версии в зависимостях. Но это работает только со статическими либами, а как это организовано для динамических? неужели и запускаются в почти чистом окружении о_О
bormand # 0 ⇈
А насчет версий - там хитрая херня с именованием сошек. Лень с телефона рассказывать.... загугли если интересно.
Вкратце - большинство либ обратно-совместимые, поэтому если одной проге надо 1.0.5, второй 1.0.7, а в системе стоит 1.1.5, то они обе будут ее юзать.
LispGovno # 0 ⇈
Как на этом можно на говнокоде сидеть... Никак не иначе лопата... Для лесенок то...
> одной проге надо 1.0.5, второй 1.0.7, а в системе стоит 1.1.5, то они обе будут ее юзать.
Как страшно жить... Мне кажется что-то линуксоиды не продумали. Но интересно, спасибо...
bormand # 0 ⇈
В общем там есть такое соглашение, что либы с одинаковой мажорной версией обратно совместимы. Соблюдать его должен автор либы, не забывая проинкрементить т.н. soname, который вшивается в so'шку. Если не соблюдает - то он пидорас и вообще редиска.
Например у libfuck.so.6.2.4 вшит soname libfuck.so.6. Если следующая версия несоместима - она должна называться к примеру libfuck.so.7.0.1 с soname = libfuck.so.7.
В зависимости бинарников вкомпиливается не полная версия, а тот самый soname. Поэтому если прогу собирали с 6.2.4, то она будет работать и с 6.7.2 и с 6.3.5 (с 6.1.0 она работать не будет, и такую ситуацию не допустит пакетный менеджер: "или крестик сними ставь более старую прогу или трусы надень обновляй либу").
А 6.2.5 и 7.3.5 могут стоять одновременно, не мешая друг другу.
P.S. Блин, плохо поди объясняю?
LispGovno # 0 ⇈
Не, вообще всё понятно. Тебе нужно что-то повышающее самоуверенность. Скилл не прокачен.(
3.14159265 # 0 ⇈
Только что вы могли наблюдать парадокс Даннинга-Крюгера живьём. Спасибо за внимание.
Обратный пример на этом сайте полагаю тоже все видели.
guest # 0 ⇈
3.14159265 # 0 ⇈
Я ж твой ник не упоминал. С чего это тебя так зацепило?
guest # 0 ⇈
Да ты меня затраллел, лалка 🙂
guest # 0 ⇈
3.14159265 # 0 ⇈
>>Я думаю, все поняли, про кого это.
Конечно поняли.
http://govnokod.ru/15791#comment228425
http://govnokod.ru/12940#comment176220
s-a--m 8 дней назад #
Но тебе же так печет пукан от слова прыщееб
anonimb84a2f6fd141 02.05.2013 21:40 #
Блядь, да зашей ты уже себе пукан, что ты им в каждом треде сверкаешь, сучечка.
http://govnokod.ru/13413#comment187715
guest # 0 ⇈
3.14159265 # 0 ⇈
Это просто оттого что ты совершенно не обучен логике .
3.14159265 # 0 ⇈
Есть еще LD_PRELOAD.
LispGovno # 0 ⇈
Хз. Вон у меня куча питонов и Qt стоит. Как-то все вместе живут...
> пост-установочный триггер пыхи рестартит апач
А что он из себя представляет на системном уровне? Сигнал посикс? Я кроме названия просто про него ничего не знаю.
А мне тут один линуксоид рассказывал, что линух очень крут и вообще разруливает конфликты версий библиотек через симлинки и позволяет заменять библиотеки которые сейчас используются! тоже посредством симлинков. Это тоже должен я в своем инсталяторе как-то обеспечивать, если допустим мне это понадобится?
А ввобще исчерпывающее объяснение. Спасибо. Глядишь свой пакет соберу. Но нельзя собирать не по правилам. У меня начнется синдром незавершенности. Так что только деабинизация. 🙂
bormand # 0 ⇈
Это сила и слабость линуха... mandatory lock'ов по умолчанию нет. Поэтому и можно творить такие непотребства как удаление открытых файлов...
Триггер? Да просто набор команд, который надо выполнить в процессе установки.Вроде бы и все...
LispGovno # 0 ⇈
А что в этом плохого, если приложение не падает при этом все равно и может обращаться к старому файлу?
Abbath # 0 ⇈
chtulhu # 0 ⇈
почему непотребство? Замечательная вещь. Особенно, если у тубя открыто что-нибудь, что не хочет освобождать файл. Винда у меня частенько ругалась из-за того, что не могла удалить директории, т.к. они были открыты в других приложениях
1024-- # 0 ⇈
У меня в Windows 8 довольно часто не хочет удалять папки из-за того, что кто-то использует служебные файлы типа thumbs.db. Иногда даже только что созданные папки так "застревают". Фиг знает, баг explorerа или вирус какой установился.
guest # 0 ⇈
Abbath # 0 ⇈
LispGovno # 0 ⇈
Abbath # 0 ⇈
LispGovno # 0 ⇈
LispGovno # 0 ⇈
Abbath # 0 ⇈
bormand # 0 ⇈
Всё будет работать 😉 Там есть /etc/ld.so.conf (и соотв. папка /etc/ld.so.conf.d) в которые можно дописать дополнительные папки для поиска либ. По умолчанию там /lib и /usr/lib.
bormand # 0 ⇈
LispGovno # 0 ⇈
> Это таргет. Файл у мейков задается через -f.
А почему это вообще приходится собирать мингевешным мейком, а не стандартным гнутым? Как это вообще определить?
bormand # 0 ⇈
Х.з., в мане по сборке так написано было, я и не стал выпендриваться. А вообще - mingw32-make и make это один и тот же файл. Чем меньше выпендриваешься - тем больше вероятность успеха 😉
guest # 0 ⇈
guest # 0 ⇈
Блин, а зачем тогда писал?
Edit: дочитал
guest # 0 ⇈
brutushafens # 0 ⇈
bormand # 0 ⇈
brutushafens # 0 ⇈
TarasB # 0 ⇈
roman-kashitsyn # 0 ⇈
brutushafens # 0 ⇈
guest # 0 ⇈
brutushafens # 0 ⇈
eth0 # 0 ⇈
guest # 0 ⇈
1024-- # 0 ⇈
Видимо, не надо было приходить с войной и топить треды.
> Тема не актуальная, никто туда не заходит
Тут сток смотрят, потому неактуальная тема, куда никто не заходит - это свежий пост на главной с 0 комментариев 🙂
brutushafens # 0 ⇈
1024-- # 0 ⇈
Желание минуснуть оппонента.
brutushafens # 0 ⇈
guest # 0 ⇈
Вот поток флуда, даже ручного, его может угробить на ура.
1024-- # 0 ⇈
bormand # 0 ⇈
Х.з., этот пост я не трогал.
> http://govnokod.ru/15852#comment230006
За пригорания от минусов.
> http://govnokod.ru/15817#comment230025
Стековерфлоу там >>>
brutushafens # 0 ⇈
1024-- # 0 ⇈
brutushafens # 0 ⇈
inkanus-gray # 0 ⇈
guest # 0 ⇈
Борманд, скажи честно, ты сам там хоть раз спрашивал?
3.14159265 # 0 ⇈
Скажи мне кто твой друг, и я скажу кто ты.
brutushafens # 0 ⇈
3.14159265 # 0 ⇈
Я сейчас чуть не обосрался от страха что меня будут минусовать.
brutushafens # 0 ⇈
TarasB # 0 ⇈
3.14159265 # 0 ⇈
Бугага три раза. А то я смотрю какой-то ты бесчувственный...