[WT] [Архив]  [Поиск] Главная Управление
[Совместно с Ычаном]
[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]
Ответ в нить
Имя
Animapcha image [@] [?]
Тема   ( ответ в 15681)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, OGG, PDF, PNG, PSD, RAR, SVG, SWF, TXT, XCF, ZIP размером не более 10000 кБ.
  • Ныне 2262 unique user posts. Посмотреть каталог
  • Максимальное количество бампов треда: 500
Файл: 148684155914.png-(659.24KB, 720×720, junior_developer_kyon.png)
15681
No. 15681 Закреплено watch    
Здесь можно получить помощь и консультацию по любому языку программирования, в любой сфере разработки. Не важно, программируете ли вы собственного робота, пишете серверную приблуду, интегрируете чужие API, ковыряете игру, или пытаетесь сделать сайт на Wordpress - если аноним что-то об этом знает, он обязательно поможет.

Примеры кода лучше выкладывать в виде ссылок на http://pastebin.com или http://ideone.com
Фронтендные вещи лучше выкладывать на http://jsfiddle.net

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

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

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

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

Пополняемая база знаний: http://pastebin.com/AGhLZppH
Cсылки на прошлые нити указывают сразу на архив

Другие тематические нити (не стесняйтесь их поднимать):
Java: >>/dev/13949
Python: >>/dev/14767
Сайтостроение: >>/dev/13701
Ren'Py: >>/dev/14429
Upwork: >>/dev/14444

Архив нитей:
http://410chan.org/dev/arch/res/14160.html

Прошлая нить пока тонет тут: >>/dev/14160
Развернуть все изображения
No. 15683    
Проверил первые три ссылки в "пополняемой базе знаний" из оппоста - все мертвые. Архив нитей тоже мертв. Наверное, имеет смысл их удалить в следующий раз.
No. 15684    
>>15683
Всё в порядке. Просто старую нить обещали сразу перенести в архив, но не перенесли. Поправил ссылки в базе знаний чтобы они указывали на еще живую старую нить. Как заархивируют - поменяю обратно
No. 15685    
Хотел спросить: могли бы назвать несколько борд с активным разделом по программированию? Про тот самый и доброчан говорить, пожалуй, не стоит.
No. 15686    
>>15685
Форчонг, японский двач, футаба.
No. 15687    
>>15685
>>15686
Лор же.
No. 15688    
reddit. Не борда, но там есть ВСЁ.
No. 15689    
>>15685
/g/dpt (но там щитпостинг в основном)
No. 15690    
Куда лучше идти:

Фронтенд - HTML,CSS, JS, ну и соответствующие к нему фреймворки
/
Вэб
\
Бэкэнд - PHP/Java/Rubi/Perl ...

Мобильные приложения - Java применительно к Android, Swift для ios итд...
No. 15691    
>>15690

Если ты задаёшь такой вопрос, то наверняка тебя ничто конкретное не интересует.

Идти надо туда, где появляются новые технологии, которые ты можешь быстро освоить, на этом ты можешь сколотить бабло.

У меня где-то сохранена статья с хабра с развёрнутым комментарием какого-то сударя, который брался исключительно за то, что было ново и востребовано, но я не могу найти его.
No. 15692    
>>15690
Бэкэнд+Андроид+интерпрайз-хуяк-хуяк-впродакшен: C (для понимания, как ебать байтики и чёрной магии), Java (основы ООП, Андроид), Perl (для парсеров, однострочников и освоения регуляркомагии), C++/C#/Golang (интерпрайз, гейОС), Python (если не вызывают отвращения отступы), Haskell (чтобы всех затроллить).
Но если хочешь зарабатывать и надеешься на деньги в ойти, то: ведро, швабра, знакомые в крупной ойти-компании.
No. 15693    
>>15691
>где появляются новые технологии, которые ты можешь быстро освоить
…и которые через два-три года, за которые ты ими овладеешь, никому нахер будут не нужны. Плохой совет.
No. 15694    
Вкатываться сейчас? Только нейроночки, очевидно же. Если нет базы по матану/матстату, тогда рассматривать варианты вроде >>15690
No. 15695    
>>15692
Разве большинство парсеров не на Пыхе пишутся?
No. 15697    
Файл: 148694444648.jpg-(138.87KB, 1280×901, 1477977432206.jpg)
15697
Стиви, не прогоняй, пожалей мое зрение и в мире больше будет теплого лампового кода.
Реквестирую аудиокниг по околоайти (чтобы без кода и формул же). Я себе неспешно почитывал Собор и Базар пока глаза не начали вылазить от смены одного экрана на другой, хочу попробовать делать перерывы и чтобы не скучать - слушать что-то полезное и идеологически верное. Понятно, что подобная литература озвучивается редко, но должно же быть что-то про кулхацкеров и лучи добра.
No. 15698    
>>15693

Не нужно овладевать всем этим дерьмом, нужно удовлетворять спрос рынка навыками чтения документации и решения задач. Если хочешь чем-то конкретным овладеть, делай это в свободное от работы время.
No. 15699    
Файл: 148706577711.png-(168.83KB, 750×750, 1456151239001.png)
15699
Вопрос к рубистам.
Понадобилось нарисовать гуй средствами MRuby, внезапно застрял на одном незначительном моменте - не могу решить в каком именно виде хранить и передавать координаты элементов. Варианты:
  • Array ( [x,y] )
  • Struct ( Class Vec2 < Struct.new(:x,:y); Vec2.new(x,y) )
  • координаты отдельно ( @x, @y )
Бенчмарк показал, что последний способ в 2 раза быстродейственнее массива, и в 6 раз быстрее Struct'а. Но очень не хочется везде дублировать код.
Собственно, а как правильно делать в этом вашем руби?
No. 15700    
Няши, накидайте книжек по Perl 6.
Заранее спасибо.
No. 15701    
>>15699
Неправильное место ты выбрал для бенчмаркинга и поиска путей оптимизации. Делай как тебе удобно. С гуями на руби не работал, но некоторый опыт работы с руби подсказывает что параметры стоит хранить либо в полях либо в хеше.
No. 15702    
>>15699
Делать как удобно и наиболее очевидно, до тех пор пока не заметишь, что именно в этом моменте нужно оптимизировать производительность. Руби вообще вроде считается не самым быстрым языком чтобы гнаться в нем за бенчмарками.
No. 15703    
>>15700
Тут много разных материалов:
https://perl6.org/resources/
Книги тоже приведены, но почему-то их там крайней мало и готовой значится только одна, Perl 6 at a glance:
https://deeptext.media/i/perl6-at-a-glance/perl6-at-a-glance-preview.pdf это превью

Из издаваемых книг нашел еще Perl 6 by Example:
https://leanpub.com/perl6/read_sample

Из бесплатных вижу такое: http://www.perlfoundation.org/perl6/index.cgi?open_source_perl_6_book

И такое: https://github.com/perl6/book

А вообще, что-то с книгами по перл 6 так плохо, что даже кампанию на кикстартере провели https://www.kickstarter.com/projects/1422827986/learning-perl-6/
No. 15704    
>>15699
>Собственно, а как правильно делать в этом вашем руби?

Правильно - сделать так, чтобы читалось лучше. Если тебе была бы нужна производительность, ты не писал бы на Руби.
No. 15705    
>>15699
Пока мы ждём рубистов, покажи пожалуйста немного кода, который ты хочешь оптимизировать. Чтобы понять, сколько раз вызывается метод, который должен получить координаты, что он там с ними делает, етц.
No. 15710    
>>15692
Добавлю кое-что: с Perl'ом ты можешь показывать друзьям которых у тебя нет какой ты охеренный хацкер, благодаря регэкспам.
No. 15711    
>>15710
>>15692
Упс, не заметил про регулярку. Фейл.
No. 15723    
Файл: 148745285823.jpg-(16.18KB, 610×273, 1478534921_20160807160345_1-1.jpg)
15723
>>15694
Нейросети сейчас не более чем игрушка.
No. 15731    
>>15723
Как и персональные компьютеры в 80х.
No. 15733    
>>15723
>>15731
>Чтобы не сбивать новичков с толку, а также не разбавлять полезную информацию мусором, беспредметные споры типа "какой язык / парадигма / библиотека / етц лучше" здесь запрещены.

Давайте создадим рядом дискуссий нить и будем там дискутировать.
No. 15763    
Файл: 148790477190.jpg-(469.32KB, 1920×1080, junior_developer_kyon_standby.jpg)
15763
Аноним проверяет тред несколько раз в сутки, чтобы каждый мог получить ответ или хотя бы наводку на него в тот же день.

Раздел медленный, так что пусть даты постов не пугают вас, аноним ждет ваших вопросов и кодерских находок.
No. 15766    
>>15733

Уже есть, называется /dev/.
No. 15768    
>>15723
Я тут мимо шел и хочу заметить, что эти "игрушки" вполне используются, например, в в физике и химии. Просто потому что для ансамбля из, допустим, 1000 квантовых объектов, она быстрее и точнее даже квадратичного метода (ака попарное взаимодействие), не говоря уже о честных вычислениях
No. 15769    
>>15768
>приближение нейросетями
>точнее честных вычислений
No. 15770    
>>15769
Ой все. Ясно же, что здесь имелась ввиду только часть про быстрее
No. 15773    
Поясните мне пожалуйста за NoSQL. Все что я вижу - это реализации key-value хранилищ в виде отдельных приложений. А разговоров вокруг них будто какой-то рокетсаенс. Есть ли у них жизнь помимо кеш-серверов или хранилищ для проектов без связанных друг с другом данных?
No. 15774    
>>15773
>Есть ли у них жизнь помимо кеш-серверов или хранилищ для проектов без связанных друг с другом данных?
Не сколько "не связанными данными", сколько "плохо структурированными" или "плохо структурируемыми" данными. Для многих сфер где надо собирать информацию вроде и одной тематики, и схожую, но с возможными драматическими отличиями например, в информации с одного источника есть здоровый кусок данных, в информации с другого источника этого куска нет, но есть какой-то другой Каждый раз адаптировать реляционную базу данных под такое - сущее мучение. А добавить поле в документ и проверить потом что оно там есть - очень быстро. Главное - не пытаться делать из нереляционной базы реляционную, нахлобучивать джойны, каскады, и т.д.

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

>А разговоров вокруг них будто какой-то рокетсаенс.
Обычно рокет саенс начинается когда на нереляционной базе начинают по привычке строить реляционную модель данных, а так да, ничего сложного особо нет
No. 15789    
Файл: 148840379170.jpg-(138.60KB, 960×540, photo_2017-02-27_08-49-37.jpg)
15789
Что почитать (лучше примеры и туториалы) для того чтобы научиться красиво писать на Python 3 всякие сложные list comprehensionы с лямдами, мапами и генераторами? Типа сделать словарь из трех списков с доп условиями. И, скорее, даже не просто красиво их писать, а наиболее читабельно и менее объемно, уверен есть какие-то стандартные практики.
No. 15790    
>>15789
PEP 8 уже вызубрил?
No. 15791    
>>15790
Нет, но провел один пару раз рефакторинг кода в соответствии с ним. Возможно, когда-нибудь и вызубрю таким образом. Кстати, не нашел там ничего из того, о чем писал выше.
Вот, например, как мне удобнее всего сделать список уникальных слов для набора текстов, если есть список текстов, где каждый текст это список слов?
Я делаю так:
unique = []
for text in tokenized_texts:
for word in text:
out.append(token)

Однако уверен что можно сделать читабельный однострочник.
No. 15793    
>>15791
>как мне удобнее всего сделать список уникальных слов для набора текстов, если есть список текстов, где каждый текст это список слов?
Это слова. Твоя проблема - сделать из двумерного списка одномерный и уникальный. Что гуглится.
set(itertools.chain.from_iterable(tokenized_texts))

No. 15797    
>>15793 О, https://docs.python.org/2/library/itertools.html выглядит очень неплохо, спасибо. Похоже придется прошерстить всю стандартную библиотеку, чтобы найти подобные приёмчики.
No. 15808    
В яве взможно иметь "перегруженный" женерик с разным количеством типов?
Например
interface A<T1,T2> {
void do(<T1 t1, T2 t2);
}
и
interface A<T> {
void do(T t);
}
No. 15809    
>>15808
Нет, нельзя.
Ты можешь перегрузить методы, ты можешь унаследоваться от интерфейса с более точным указанием типов
public interface TestInterface<K,V> {}
public interface TestInterfaceTwo<V> extends TestInterface<Object, V> {}
No. 15810    
>>15809
С этим понятно, другой вопрос.
Я объявил
interface BiPredicate<T, U> {boolean test(T t, U u);}
(Делаю велосипед, так как лямбды у меня не поддерживаются.) Теперь как лучше сделать реализацию, чтобы она была статичным методом статичного класса? Чтобы передавать предикат в функции f(Predicate<T, U>) как f(Util::compareFooAndBar)
No. 15813    
>>15810
Честно говоря я запутался. Емнип синтаксис :: появился в 8 жаве. Ты сказал что лямбды использовать не можешь я предполагаю что у тебя вресия 7 или ниже. В таком случае я не вижу иного выхода как по-честному расписывать методы без дополнительной абстракции. Возможно если ты приведешь конкретный пример как ты хочешь использовать свой метод, я смогу посоветовать лучше.
No. 15814    
Файл: 148864247045.png-(47.51KB, 677×473, 111.png)
15814
Что у меня не так в коде? Компилируется без ошибок, при попытке вызвать getRadikals() дохнет с: terminate called after throwing an instance of 'Glib::ConvertError'
No. 15815    
Файл: 14886424884.png-(29.95KB, 673×480, 222.png)
15815
>>15814
No. 15817    
>>15814
>>15815
Нашел такую проблему с ustring: https://mail.gnome.org/archives/gtkmm-list/2012-November/msg00016.html

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

Приводится такой рецепт решения:

>#include <locale.h>
>and
>setlocale(LC_ALL, "en_US.utf8");
>made the code work without exceptions.

Попробуй и сообщи результаты.
No. 15818    
>>15813
У меня восьмая, но со старым синтаксисом (Processing) https://github.com/processing/processing/issues/3054
Я быдлокожу данмаку (как оригинально) на процессинге. У меня есть статический метод public static boolean checkCollision(Actor a1, Actor a2)
Экземпляры класса Actor хранятся в коллекциях playerBullets, enemies, enemyBullets, pickups, etc.
В игровом цикле сопоставляются все элементы из ааждой нужной пары коллекций через checkCollision, и если коллизия есть вызывается коллбек типа BiConsumer<Actor, Actor>.
Сопостовление происходит через функцию, которая принимает на вход две коллекции с Actor'ами и коллбек, который нужно вызвать. Выглядит вызов так: Util.findCollisions(playerBullets, enemies, onEnemyHit);
Из любви к хорошему коду хотелось бы сделать функцию генериком с сигнатурой типа:
public static <T, U> void compareObjects(Iterable<T> list1, Iterable <U> list 2, Pedicate<T, U> comparator, BiConsumerT, U> handler);
Т.е. если сейчас в функции в качестве проверки захардкожено checkCollision, я хочу отправлять вместо этого предикат. Вопрос заключается в том, как ме объявить класс, реализующий интерфейс Predicate<Actor, Actor> так, чтобы е создавать экземпляр класса, а использовать статично, как сейчас захардкожена статичная функция chrckCollision.
Вот.
No. 15819    
>>15818
>>public static <T, U> void compareObjects(Iterable<T> list1, Iterable <U> list 2, Pedicate<T, U> comparator, BiConsumerT, U> handler);
Как я понимаю ты в одном месте собираешься одновременно сравнивать компаратором и обрабатывать обработчиком, что уже не очень красиво т.к. ты нарушается принцип единой ответственности. Чем тебе не нравиться стандартный подход - через интерфейсы? Если я более-менее правильно понимаю твою ситуацию, то в красоте и читабельности от передачи функции вместо объекта хендлера ты не выиграешь.
Если твой код где-то выложен, могу поревьюить.
No. 15820    
>>15818
И да, у тебя путаница Predicate и BiConsumer
Predicate - с одним параметром, возвращает boolean, BiConsumer - с двумя, возвращает ничего.
Predicate<String> s = (p) -> p.length()>0;
BiConsumer<String, String> bc = (a, b) -> {
System.out.println(a);
System.out.println(b);
};
System.out.println(s.test("asd"));
bc.accept("str1","str2");
Поэтому если коллбек ты еше сможешь сделать подобным образом, то компаратор тебе придется делать через интерфейс без вариантов.
No. 15821    
>>15817
Извиняюсь, проблема была в другом. Я вызвал getRadikals() до волшебной команды, которая видимо инициализирует gtkmm - Gtk::Main kit( argc, argv );. Поставил вызов getRadikals() после, и все заработало. Спасибо.
No. 15823    
>>15818
>>15820
Затупил, ты же писал что твои предикаты это твой собственный интерфейс. Кажется я разобрался что ты хотел, посмотри этот вариант
http://pastebin.com/BhdUVHWQ
No. 15826    
Какой язык можно использовать вместо Питона?
No. 15827    
>>15826
В каких целях?
No. 15828    
>>15826
Вайтспейс.
No. 15829    
>>15827
Скрипты и парсеры
No. 15830    
>>15829
Перл.
No. 15831    
>>15830
А он разве жив?
No. 15832    
>>15831
А разве нет? Что мешает писать на нём?
No. 15833    
>>15829
Для скриптов и парсеров всегда есть смысл использовать:
А также присутствуют лямбды, фвп, и прочие привычные питонисту вещи. Также поддерживается скриптование из коробки: https://www.scala-lang.org/documentation/getting-started.html#script-it

Если под парсерами имеются в виду всякие скрепперы и краулеры, то стоит рассмотреть:
  • Node.js и надстройки над ним вроде Casper.js, т.к. это быстрый способ накостылять выдергивалку веб-контента, которая будет делать что-то полезное. Также, это всё можно заставить скриптоваться, хоть и окольными путями: https://developer.atlassian.com/blog/2015/11/scripting-with-node/

No. 15834    
>>15831
Релизы идут.
Есть ещё шестёрка, там поддержка грамматик на уровне языка
No. 15835    
Всем добрый вечер. Задачка такая: есть текст типа

text
text text ...
....
@@@

.
.
.
@@@
Множество таких вот полей короче говоря, типа абзацев, хз.
Нужно распарсить их, оставив последнее поле, при помощи awk или sed в Bash-е.
Это как бы часть задачи оставшаяся, так то я привел текст к такому состоянии и стал в тупике. Посоветуй что нибудь, Стив.
No. 15836    
>>15835
http://pastebin.com/AYXfx16d
ай, больно получилось, вот пример текста для парсинга.
No. 15837    
>>15835
Советую http://www.grymoire.com/Unix/Awk.html
No. 15838    
>>15835
А залей на пастебин заодно как ты хочешь, чтобы оно выглядело в итоге, а то не очень понятно.
No. 15839    
>>15838
http://pastebin.com/xTugXepB
Вот так вот примерно.
>>15837 плохонько у меня с английским, к сожалению.
No. 15840    
>>15839
Советую выучить английский.
Впрочем, мне самому лень осиливать что сложнее грепа, вот костыль:
TEXT=$1
NUM =
grep -n '***' TEXT | tail -n 1 | grep -oP '\d*'

tail -n $NUM $TEXT
No. 15841    
>>15840
>` переводит на другую строку
Как-то это неправильно, Соус.
No. 15842    
>>15840
проблема в том, что нам не известен текст.
Нам известено только то, что нужно отрезать от всего текста все, до последних звездочек.
No. 15843    
>>15842
Ты понимаешь, что для этого по-любому потребуется какой-то буффер? Ну, запихиыай в него строки, и обнуляй по нахождению следующего "*". Или таки учи авк чтобы написать там то же самое.
No. 15845    
>>15839
>>15842

Допустим твой файл, в котором лежит инпут называется test.txt

Тогда:

tac test.txt | sed '/\*\*\*/q' | tac


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

Аутпут получается ровно тот, что ты просил.
No. 15846    
>>15845
оу, спасибо большое. Я что-то не догадался до такого:)
No. 15885    
Тут был анон, который спрашивал про скалу как основу для скриптов, но его вопрос куда-то делся. Базово это будет работать так же как питон, который через свою виртуальную машину код гоняет. Т.е. оно тоже не нативно, но более-менее прозрачно получится:
https://www.scala-lang.org/documentation/getting-started.html#script-it
No. 15950    
Файл: 148992465748.jpg-(120.11KB, 227×343, puff.jpg)
15950
Хочу абстрагироваться от говноиннтерфейса борд, а ещё лучше запилить технофашистский форум на 9p, где можно будет бугуртить от современного говно-ПО, обмазываться столменовщиной, тео-де-раатовщиной хоть через SSH. Какие бинарные блобы?
No. 15951    
Файл: 148994124719.jpg-(73.58KB, 300×280, Parovoz_na_tirechevo.jpg)
15951
>>15950
No. 15952    
>>15951
Не нашёл так ничего хоть сколько-нибудь подходящего под описание.
No. 15954    
>>15952
>можно будет бугуртить от современного говно-ПО, обмазываться столменовщиной, тео-де-раатовщиной
Типичный /s/.
No. 15955    
>>15954
На тирече нет /s/. Если ты про мэйлач, то из перечисленного там только бугурт. Но теперь я понял свою ошибку, так что косвенно ты мне помог-таки. Не благодарю, уёбываю.
No. 15957    
>>15950
Технических подводный камней два - нет готовой технической базы, раз. Нет готовой архитектуры для такого форума, два. По крайней мере, насколько мне известно Это всё можно придумать, но для этого надо знать как ты себе представляешь подобный форум, что и хотелось бы спросить. Но ты уже ушел

Еще это всё упрётся в 3, из-за обскурности неоткуда будет собрать сообщество
No. 15958    
>>15957
Обскурность можно решить через мониторинг открытой части ресурса, и инвайтить подходящих. Хотя это и не решение всех проблем, я вижу очевидные слабые стороны, но тем не менее уже что-то, как минимум позволяющее понять, стоит ли городить более основательные вещи.
No. 15959    
>>15950
Ах, да. Лор.
No. 15960    
>>15958
>инвайтить подходящих
Это как "на ваш айпи адрес было выслано приглашение"? Или просто $регистрация по инвайтам от других мемберов? Но за этим следуют аккаунты, карма и всё то что так не любят анонимусы.

Если у ресурса будет открытая веб-часть, которая будет собирать всё информацию воедино и которую всё равно могут читать все, что даёт распределенное хранилище?

Сириасли, распиши свою задумку развернутее.
No. 15961    
Товагищи!
>нет готовой технической базы
Нипонил. Какая техинческая база? Конпелятор есть? Есть. Тырнеты есть? Есть. lib9p есть? lib9p есть или нет? Что же вы молчите?
>Нет готовой архитектуры для такого форума
Это канал про аниме?
>Сириасли, распиши свою задумку развернутее.
В самом общем приближении хотелось бы виртуальную ФС как интерфейс к форуму. То есть впилить борду в Plan9. Пост - создание файла в директории треда, например. Фронтэнд уже какой хочешь прикрутить можно, на каком угодно языке, хоть на SHELL-скриптах. Чтобы подключиться к борде, монтируешь соответствующую удалённую ФС. Красота.
No. 15962    
>>15961
>удалённую ФС
Причём, можно и распределённую, к gnunet какой-нибудь подключаться. Или к ZeroNet. Через Tor. В общем, главное - ФС как интерфейс.
А недостаток один - оно нахуй никому не нужно. Да и для меня не проебать лето задача куда приятнее.
No. 15963    
Стиви, хочу научиться кодить на плюсах, пока мутужу книгу по С Кернигана и Ритчи, в связи с этим три вопроса.
1. Есть ли подобная упомянутой выше книга про плюсы?
2. Есть ли сборник типовых задач, который ты должен мочь чтобы на должность стажера претендовать?
3. Какой нормальный IDE под шиндовс есть? *nixы мне совсем не вариант, с основной работой не сочетается.
No. 15964    
>>15963
1. Страуструп, но её нирикамендуют.
3. IDE много, я сейчас учусь в Qt Creator.
No. 15965    
>>15964
пачиму нирикаминдуют?
No. 15966    
>>15963
>2. Есть ли сборник типовых задач, который ты должен мочь чтобы на должность стажера претендовать?
Скорее всего тебе придётся претендовать на стажерство не на C, а на C++

C
Вот список литературы. Обычно от стажеров требуют знать основы языка а также несколько best practices.
http://stackoverflow.com/a/562377

C++
Я бы обратил внимание в первую очередь на ООП-туториалы (на другие обрати внимание тоже) https://www.tutorialspoint.com/cplusplus/cpp_object_oriented.htm Не забывай жать Next Page

Что касается именно списка литературы, то посмотри на этот. Опять-таки, обычно от стажеров требуют знать основы языка а также несколько best practices:
http://stackoverflow.com/a/388282

Также стоит обратить внимание просто на "вопросы которые задают на собеседованиях по C/C++"
https://www.tutorialspoint.com/cprogramming/cprogramming_interview_questions.htm
http://www.indiabix.com/technical/c/
https://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm
http://alumni.cs.ucr.edu/~lyan/c interviewquestions.pdf
No. 15973    
>>15965

Скорее всего потому, что это толстенная книга про плюсы целиком, и даже после прочтения её ты всё равно не будешь полностью знать плюсы.
No. 15980    
Привет. Делаю БД в MySQL через консоль (упражнение из книги по веб-програмированию). Создал таблицу, но при добавлении информации мне пишет ERROR 2006 (HY000): MySQL server has gone away. В сети пишут найти в файле my.ini параметр max_allowed_packet и изменить значение с 4 на 32 и даже на 128. Я поменял, но ошибка никуда не исчезла. Вертится все в винде 7 через локальный сервер Open Server. MySQL и PHP версии 5.5-х64.
No. 15981    
>>15980 128M ?
No. 15982    
>>15980
> max_allowed_packet sets an upper limit on the size of any single message between the MySQL server and clients, including replication slaves. If you are replicating large column values (such as might be found in TEXT or BLOB columns) and max_allowed_packet is too small on the master, the master fails with an error, and the slave shuts down the I/O thread. If max_allowed_packet is too small on the slave, this also causes the slave to stop the I/O thread.

Ты одним запросом передаешь слишком много данных, пробуй делить его на куски. Ну и как выше говорилось - перепроверь, правильно ли ты записал параметр в конфиге.
No. 15983    
>>15980
https://dev.mysql.com/doc/refman/5.7/en/gone-away.html
Тут пишут что проблема может быть в винде, и что есть смысл посмотреть на коннкешн таймаут. Также, на всякий случай, после смены конфигов надо перезапускать mysql-сервер. Скорее всего он у тебя как служба

>You are using a Windows client and the server had dropped the connection (probably because wait_timeout expired) before the command was issued.

>The problem on Windows is that in some cases MySQL does not get an error from the OS when writing to the TCP/IP connection to the server, but instead gets the error when trying to read the answer from the connection.

>The solution to this is to either do a mysql_ping() on the connection if there has been a long time since the last query (this is what Connector/ODBC does) or set wait_timeout on the mysqld server so high that it in practice never times out.
No. 15984    
>>15980
Алсо, уточни пожалуйста, когда ты говоришь "из консоли" это ты запустил в cmd mysql.exe, или какой-то клиент типа sql workbench, или пользуешь какой-то веб-клиент типа phpmyadmin?
No. 15987    
Да. Запуская mysql.exe в cmd. Параметр проверил max_allowed_packet = 128M Новых не создавал, правил через блокнот существующий. По поводу "слишком много данных" сомневаюсь, там получается 5 записей (таблица из 5 колонок, 1 слову в 1 колонку) от силы на 30-40 символов. Мускул перезапускал и не раз. Разве что не переустанавливал. Не понимаю что значит "mysql как служба". Можно поподробнее?
No. 15990    
>>15987
>Параметр проверил max_allowed_packet = 128M
Проверь еще wait_timeout. И обязательно проверь, чтобы параметры на самом деле применялись. Вот тут показано как посмотреть актуальное значение прямо на запущенном сервере http://stackoverflow.com/a/1493742

>Не понимаю что значит "mysql как служба". Можно поподробнее?
Это значит, что сервер mysql интегрирован в систему, и ты его запускаешь/останавливаешь командой типа net start mysql / net stop mysql.
Легко проверить, зайдя в Панель Управления -> Система и безопасность -> Администрирование -> Службы, и поискав там MySQL. Или запустив msconfig, во вкладке Службы, с галочкой "Не отображать службы Майрософт"
No. 15991    
Читаю "Язык программирования Си". Застрял в самом начале на задаче считать текст посимвольно без массивов и при выводе заменить несколько подряд идущих пробелов на один. Если я правильно понимаю, что если использовать массив, то там просто надо записать в массив и двигать по массиву попадающиеся символы пока в прошлом элементе массива не будет пробел, а позапрошлом элементе пробела.
No. 15992    
>>15991
Без массива тебе надо просто считывать посимвольно в цикле, храня в памяти последний записанный символ. Если последний записанный символ - пробел, и текущий символ - тоже пробел, тогда ты его пропускаешь.
No. 15993    
>>15992
А в цикле ты базово считываешь по символу из STDIN (или откуда надо) и тут же выплёвываешь его в STDOUT (или куда надо), если он проходит проверку.
No. 15995    
Спасибо за совет, проверю все параметры, потом отпишусь помогло ли. Возможно таки действительно ошибка связана с виндой, так как в убунте мускул работает без всяких реконектов.
No. 16005    
Добрый вечер товарищи. Мне нужна помощь, в парсинге веб страничек. Юзаю питон (ну собственно познакомится с питоном и было задачей). Пока что потолок такой. Взять сайт, в моем случае yande.re, и создать списочек ссылок на картинки которые есть там.
Вот что набросал пока что. Типа все ссылки находятся в теле тега <script* в строках с началом Post register. Мой код оставляет собсно только строчки с Post register, а дальше не получается. Дайте совет как-нибудь :
http://ideone.com/gdqzOv
No. 16006    
>>16005
проблема в том, что на bash'e я такое могу написать, а на питоне вот завис...
No. 16009    
>>16005
findall возвращает список, используй search() и group(0). Из результата file_url доставать можно тоже регулярным выражением, но надёжнее использовать модуль json, который может распарсить JSON внутри "Post.register(...)".
Гораздо проще пойти другим путём и использовать
soup.findAll('a', { "class": "directlink largeimg" })

No. 16011    
>>16005
Тебе нужны ссылки на тамбнейлы, на полные посты с картинками, где все теги выписаны, или ссылки на сами картинки?
Вот прямо на главной я у них вижу
`

<a class="directlink largeimg" href="https://files.yande.re/jpeg/3378c6460fa025abf4e617c15be2555a/yande.re 389050 dress heels leotard nier_automata seol sword thighh
ighs%20yorha_no.2_type_b.jpg">
`

...
И тут я понял, что тебе уже ответил >>16009 , удвою его
No. 16012    
>>16005
В общем, в итоге будет как-то так
full_img_links = {a['href'] for a in soup..findAll('a', {"class": "directlink largeimg"})

Дальше с этим списком что хочешь уже можешь делать
No. 16015    
>>16012
>>16011
>>16009
Спасибо большое, разобрался
No. 16112    
Есть ли аналог python celery, на java/scala (play framework)?
No. 16113    
>>16112
Есть, называется Akka Framework. Есть для скалы, есть для жавы:
http://doc.akka.io/docs/akka/current/intro/getting-started.html
No. 16114    
>>16113
Оно по-моему даже сразу в тайпсейфовский стех входит.
No. 16118    
Не подкинете по доброте душевной пару ресурсов где расписаны команды python ?
Ну и обучалку какую по нему понятную,пожалуйста.
No. 16122    
>>16113
Не очень понятно как этим пользоваться. Может есть хорошие гайды по akka?
No. 16123    
>>16118
https://www.python.org/doc/
No. 16125    
>>16122
Если не очень понятно как пользоваться, то вот очень простой туториал, где всё вместе скручивается: http://alvinalexander.com/scala/simple-scala-akka-actor-examples-hello-world-actors
No. 16126    
>>16118
Наверное стоит попробовать интерактивный туториал по питону, это будет быстрее всего: https://www.learnpython.org/
No. 16129    
Спасибо за помощь с питоном)
No. 16132    
>>16129
Эм, если интерактивный туториал не подходит, я могу другие гайды подсказать, без проблем.
No. 16134    
Интерактивный туториал занятная штука,спасибо☺
No. 16257    
Добрый день, мне нужно значиттнаписать интерпретатор питона на си. Пока что пояснений я не получил особо и вот пытаюсь понять, что мне нужно делать, с чего начать. Ну как бы тривиальную схему работы интерпретатора я понимаю однако, как и что правильно делать пока что не знаю. Подскажите куда думать, пожалуйста.
No. 16258    
>>16257
Еще вот, для этого зачем то нужно юзать деревья.
No. 16261    
>>16257
>>16258
Вообще, так случилось что обычный интерпретатор питона уже и так написан на C: https://www.quora.com/What-is-Python-written-in
А вот его стандартная библиотека - нет, она написана в основном на самом питоне. Но обычная реализация питона не транслирует код на питоне в код на си, она крутит свой байткод в виртуальной машине.

Если тебя интересует трансляция питоновского кода в код на Си, то стоит посмотреть на Cython:
http://cython.org/
https://github.com/cython/cython

>подскажите куда думать
Собственно, у тебя есть такие пути:
1. Пойти по пути самих авторов питона, когда у тебя есть две части: парсер + генератор байт-кода, и виртуальная машина, исполняющая этот байт-код используя Си.
2. Сделать аналогично пункту 1, но без байткода, а используя более высокоуровневые компоненты для хранения конструкций питона.
3. Сделать прямую (насколько возможно) трансляцию Питон-кода в Си-код.
Это будет работать, но не все аспекты языка удастся транслировать.

Условные шаги для парсера такие:
1. Распарсить питон по его грамматике (они есть готовые)
2. Отсортировать распаршенное по принципу "что это такое", что из этого класс, что из этого операция, что переменная, что тип и т.д.
3. Замаппить отсортированное на Си-классы и типы / байткод.

Условные шаги для виртуальной машины такие:
1. Сделать распознавалку твоих специфичных си-классов / байткода.
2. Сделать систему выделения и очистки памяти (не особо серьезную, если это просто упражнение)
3. Потихоньку добавлять исполнение инструкций которые ты распознал из специфичных классов/байт-кода
4. Получать результат исполнения этих инструкций и обрабатывать его. Т.е. отправлять сообщения об ошибках, делать что-то внутри виртуальной машины и т.д.

>для этого зачем то нужно юзать деревья.
Подозреваю, для хранения текущего контекста. Это нужно, например, чтобы понять какое значение сейчас у локальной переменной в цикле, если тебе в качестве переменной передадут вызов чего-то еще, и т.д.
No. 16275    
Привет. В продолжение моего старого вопроса про вечный reconnect MySQL. Так ничего и не помогло. При запуске через cmd все так же происходит переподключение к sql. Проверил параметр wait_timeout = 600. Остальное (что рекомендуют проверить) так же в рамках приличия. В инете пишут что 30 должно хватать за глаза. Но у меня уже через 20 секунд бездействия происходит отключение. Причем само сообщение ERROR 2006 (HY000): MySQL server has gone away. выдается после того как команда создания таблицы введена и выполнена. При работе через пхпадмин и самопальную веб-форму работает норм. Тот же самый мускул в ubuntu работает нормально. Параметры настроек вроде одинаковые. Ещё, в винде, все ставил как комплект проги OpenServer. В линуксе как LAMP.
No. 16276    
>>16275
Давай копаться дальше.

Повысь уровень логгирования, и давай глянем что там:
>You can get more information about the lost connections by starting mysqld with the log_error_verbosity system variable set to 3. This logs some of the disconnection messages in the hostname.err file. See Section 6.4.2, “The Error Log”.

>Тот же самый мускул в ubuntu работает нормально
1. Сравни точные версии сервера и клиента на убунте и винде. Приведи их в соответствие.
2. Сравни конфиги на убунте и винде. Приведи их в соответствие.

>При работе через пхпадмин и самопальную веб-форму работает норм
Если дело в таймауте, то возможно их коннектор просто делает mysql_ping()

>в винде, все ставил как комплект проги OpenServer
И гугл пестрит жалобами на то что у людей падает MySQL в этой сборке. Явно же что-то с конфигом, или какая-то особо неудачная версия MySQL внутри. Возможно, стоит быстро завести виртуалку и проверить, будут ли проблемы с опенсервером и там тоже. А заодно, будут ли проблемы если туда установить чистый MySQL, без всяких сборок.
No. 16278    
>>16275
Вот еще что надо проверить:

>You may also see the MySQL server has gone away error if MySQL is started with the --skip-networking option.

>--skip-networking
>Do not listen for TCP/IP connections at all. All interaction with mysqld must be made using named pipes or shared memory (on Windows) or Unix socket files (on Unix). This option is highly recommended for systems where only local clients are permitted.

Очень может быть что в опенсервере оно так сконфигурировано.
No. 16303    
>>16261
Спасибо большое за пояснение. Завтра лекция будет на эту тему, может че прояснят.
No. 16307    
Файл: 149340979017.jpg-(47.14KB, 1080×540, 1493406909673.jpg)
16307
Горит лаба, курс читается и математикам, и кодеркам, только математикам разжевывают как на питоне что сделать, а мне (не совсем бидуро-, такими-то методами, но кодерку) говорят что математику должен знать.
Есть сгенерированные данные по равномерному распределению, надо с помощью Maximum Likelihood Estimation найти такие параметры нормального распределения, чтобы оно максимально совпадало с данными из равномерного. В конспекте много математических формул, которые у меня не получается перевести в алгоритм, как это сделать?
Дальше идут задачи на... минимализацию логарифмированных функций вероятности, что я тоже не понимаю, и мои острые сожаления о том что не брал пару лишних курсов математики.
No. 16309    
>>16307
https://en.wikipedia.org/wiki/Maximum_likelihood_estimation читать пробовал?
No. 16310    
>>16307
>с помощью Maximum Likelihood Estimation найти такие параметры нормального распределения, чтобы оно максимально совпадало с данными из равномерного.

Вот тебе пакет для этого
https://github.com/ibab/python-mle

Пример того что тебе надо прямо в ридми.

>Дальше идут задачи на... минимализацию логарифмированных функций вероятности

Посмотри, нет ли тут чего-то подходящего:
https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html
No. 16312    
Файл: 149348628242.png-(861.49KB, 698×1002, 0b9b6d0dc630b4546b2db2ccd03ee279.png)
16312
Как в питоне сделать прерывание пользователем по кнопке (esc?) проигрывания музыки:
import vlc
p = vlc.MediaPlayer("1.mp3")
p.play()
и прерывание выполнения внешней программы:
import os
os.system('espeak "some text"')
?
No. 16317    
>>16312
RTFM.
>прерывание пользователем по кнопке
https://www.olivieraubert.net/vlc/python-ctypes/doc/generated.vlc.MediaPlayer-class.html#set_pause
>прерывание выполнения внешней программы
https://docs.python.org/3/library/subprocess.html#subprocess.Popen
No. 16325    
Обнаружил, что не знаю правильного подхода к этому делу, когда дело касается многоуровневых структур. Так что, наверное, мне сюда.

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

Так вот, как правильно организовать этот самый вывод?
Вот создаём мы тред, делаем запрос к базе, получаем посты. Дальше, при выводе, к каждому посту добавляем нужную нам фичу. Как конкретно мы достаем ее из базы? Я вижу два варианта:

Вариант 1
Для каждого поста делаем свой запрос. 500 постов — 500 запросов. Не слишком вдохновляет. Конечно, мы юзаем всякие prepare/execute но всё равно…

Вариант 2
Делаем с самого начала один большой запрос для всех постов треда, сохраняем его результат в самопальную структуру, в процессе обработки постов обращаемся к этой структуре и извлекаем данные уже из нее.
Тоже не нравится. Мы ручками повторяем то, что должна делать сама база, лишний раз переливаем из пустого в порожнее. Здесь нарушается принцип «каждая часть системы должна заниматься своим делом»: данные о посте, в отличии от первого варианта, получает совсем не тот код, который должен его обрабатывать.
Плюс сам sql-запрос выходит крайне громоздким из замороченным (индексы на нем капризничают и вообще).

Есть ли альтернатива лучше, чем эти два варианта? Если нет — какой из них предпочесть?
No. 16326    
>>16325
Чтобы решить, какой из вариантов лучше, придется оценить объем данных, возвращаемых запросом. Допустим, в примере с файлами. Сколько весит одна строка таблицы этих самых файлов? Вряд ли много: айдишник картинки, оригинальное название, вес, размеры, трудно еще что-то придумать. То есть это считанные байты. Дальше, сколько картинок в среднем приходится на один пост? Это проще оценить, зайдя на уже существующую борду с множественным прикреплением. Пропущено ХХ постов/УУ файлов в помощь. Вангую небольшое число, в пределах 1-2. А сколько в среднем постов в треде? Скорее всего, что-то в районе бамплимита, то есть несколько сотен.
В итоге для треда с N постов: в первом варианте выполнятся N запросов, каждый из которых вернет 1-2 строки, плюс запрос с самими сообщениями (допустим, 500 строк).
Вариант второй: пишем запрос с джойном, который вернет и посты, и файлы. На каждый пост теперь придется по 1-2 строк, итого один запрос на, в худшем случае, 1000 строк. Прибавка в весе строки небольшая: в подчиненной таблице несколько легких полей.

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

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

Тут голый sql не подходит принципиально. Гугли ORM, именно он решает эти задачи.
No. 16327    
>>16326
>код, выводящий результаты такого запроса, выглядит очень костыльным.
Угу. И нарушает принципы инкапсуляции: по-хорошему, про эти картинки (или что там у нас) вообще должен знать лишь код, отвечающий за вывод поста, а вся остальная программа этим заморачиваться не должна.

>Гугли ORM
Погуглил.
Хм… Если третьим вариантом решения будет заменить самодельный костыль на фабричную инвалидную коляску…
Пожалуй, вспомню-ка я слова классиков про преждевременную оптимизацию, и откачусь пока на первый вариант. А в эту сторону смотреть буду, лишь если при его использовании скорость генерации страницы превысит… ну, скажем, 0.5 секунды.
Но за само озвучивание варианта — спасибо! Очевидно, что в по-настоящему сложных случаях нужно использовать именно его.

Also, если брать пример с картой ответов, то там, как мне сейчас кажется, джойном не обойдешься, придётся делать вложенный запрос (таблица кросс-линков будет иметь две ссылки на таблицу постов). Так что в нём — как бы, наоборот, от такой "оптимизации" дольше не получилось…
No. 16328    
>>16327
>фабричную инвалидную коляску
Очень точно замечено, но других способов подружить базу данных и ООП не наблюдается. С другой стороны, в таких фреймворках есть кеширование, и если его нормально настроить, немалая часть запросов вообще не будет дергать базу.

>пример с картой ответов
Джойна как раз хватит как для получения списка постов, на которые ссылается текущий, так и списка ответов на него. Тебе же нужны только ссылки на связанные посты, а не они сами. Однако, тут уж точно придется выполнять по запросу на каждый пост, и стоит подумать о том, важна ли такая "правильность" базы в ущерб скорости.

Алсо, быстродействие сайта обеспечивается далеко не только оптимизацией запросов. Можно, например, сделать серверный рендеринг в html и кеширование некоторых страниц. Не уверен, что это хорошо подходит для борды, но знать про такой способ стоит.
No. 16329    
>>16328
>Однако, тут уж точно придется выполнять по запросу на каждый пост
Эм… Навскидку, я вижу для ссылок на все посты данного треда (для простейшего случая, когда доска у нас только одна) примерно вот такой запрос (в sql "плаваю", вполне мог наложать):
select refs.post_to, refs.post_from, posts.thread_id from refs, posts 

where refs.post_to in 
        (selectpost_id from posts where thread_id = ?) and 
    posts.post_id = refs.post_from;

Но он, мне кажется, тормозить будет сильно.

>Не уверен, что это хорошо подходит для борды
AFIAK, как раз борды что-то такое используют очень активно. Треды генерятся один раз при написании поста, а дальше отдаётся готовый html. И как раз здесь, кстати, карты ответов, если их вдруг добавить, малину могут попортить сильно…
No. 16330    
>>16325
>в процессе обработки постов обращаемся к этой структуре и извлекаем данные уже из нее.
Оптимизация, Стиви, используй её!
Посты в треде идут как? По порядку. ORDER BY в запрос таблицы ссылок прописать можно? Можно. Иди по порядку и запрашивай информацию по востребованию.
А данные в памяти за тебя либа похранит.

>>16326
>код, выводящий результаты такого запроса, выглядит очень костыльным.
Код, который будет ожидать переменное количество аргументов от БД тоже будет костыльный. А можно просто няяяшно яравнивать RID первой таблицы и цапать/дописывать на живое или загонять в массив только нужное и передавать все остальные аргументы в нетронутом виде.

>>16329
>И как раз здесь, кстати, карты ответов, если их вдруг добавить, малину могут попортить сильно…
Если их присобачивать через жабаскрипт, то не очень.
No. 16332    
>>16329

Я для свой имидж борды делал так:

у меня было две таблицы.

TABLE thread

id
post_id

TABLE post
id
thread_id
text
refs
time

в refs я хранил hstore или аналог записей(много записей в одной ячейке)

когда достовал тред делала так

SELECT * FROM post AS ps
JOIN tread AS tr
on tr.id = ps.tread_id and tr.id = ?
order by time

и дальше работал с этим

По поводу рефов, когда кто-то постил >>NUM
я это парсил, и обновлял пост, когда заносил другой пост в базу.

и того когда я рендерил посты, я просто достовал для каждого поста список рефов, и формировал жаваскриптовые ссылки.

Алсо, в SQL не нужно использовать WHERE IN (большое количество элементов) так как это накладывает нагрузку на базу пропорционально кол-во элементов. Лучше ее заменить.

По поводу оптимизации базы. Держим базу на быстрых дисках, и по больше кешей в памяти, правильно указываем индексы и ключи, и тогда все будет шустро пока в таблице не будет около ляма записей(зависит от ресурсов, но как бы в 2017 можно положить).
No. 16333    
>>16329
Да, действительно, можно. Мне что-то пришло в голову, что кросс-линкинг должен действовать в обе стороны, а нужен-то только список ответов, так что от задачи с файлами вообще отличий нет. Кстати, джойном можно сделать то же самое: SELECT refs.post_to, fr.post_id, fr.thread_id FROM posts to JOIN refs ON refs.post_to = to.post_id JOIN posts fr ON refs.post_from = fr.post_id WHERE to.thread_id = ?. Какой из запросов будет быстрее - вопрос открытый. Правда, получившийся список придется разбирать, чтобы ответы на пост показать под самим постом. Впрочем, если ответы надо просто перечислить, можно написать запрос с group_concat().

>Треды генерятся один раз при написании поста, а дальше отдаётся готовый html. И как раз здесь, кстати, карты ответов, если их вдруг добавить, малину могут попортить сильно…

Ээ... Так страницу все равно придется перестраивать при добавлении нового ответа в тред, не? И карты ответов лишних затруднений не создадут.
No. 16335    
>>16330
>Код, который будет ожидать переменное количество аргументов от БД тоже будет костыльный
ЯННП. Говорилось о том, что вывести результат запроса к файлам/рефам одного поста проще простого, а всего треда - нет. Можно объяснить понятнее?

>>16332
Загуглил hstore. Это фича постгреса, в mysql ее заменить особо нечем.
No. 16336    
>>16335
Так хрони строку с пробелами, потом парси кодом, видел такое в Продакшене, на дохрена юзеров
No. 16337    
>>16335
>Можно объяснить понятнее?
Можно: как бы бы не вызывались рефы, впихивать это вовнутрь страницы будет боль: либо впихивается готовый пост целиком, для чего нужен костыль-обёртка при запросе, либо сначала впихиваются посты, а потом надо как-то допихнуть ссылки, что тоже костыль.

Сферическое в вакууме "запросить только ссылки для одного поста и ничего с этим не делать" никому не нужно.
No. 16338    
>>16333
>Так страницу все равно придется перестраивать при добавлении нового ответа в тред, не?
При добавлении нового ответа в любой тред, если он ссылается на наш. При условии, что мы, конечно, хотим обеспечить работу нашей карты ответов на уровне всей борды, а не только отдельного треда.
No. 16339    
>>16333
И да, твой вариант запроса почти наверняка будет быстрее, потому что в моём (из >>16329) оно, как показали тесты, не хочет использовать никакие ключи с результатами вложенного. Выше, вон, говорят (>>16332), что с WHERE IN ключи и не должны работать. Надеюсь, с твоим вариантом такой фигни не будет.
No. 16340    
>>16332
Не лучше ли будет посмотреть в сторону NoSQL хранилища? Типов данных мало связей почти нет.
No. 16341    
>>16336
Вообще говоря, это нарушение атомарности данных. И проявится оно как только кто-то удалит свой пост. Каскадное удаление для такого поля, естественно, настроить нельзя, и чтобы убрать ссылки на "мёртвый" ответ, придётся делать отдельный запрос по всем постам, да ещё и с LIKE, и вручную изменять эту строку.

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

>>16338
Такое обычно при перекатах делают. Вряд ли это скажется на производительности, ибо будет вызывать нечасто.

>>16339
Пустил ради интереса на похожей структуре оба запроса, так мускуль вложенный запрос сам оптимизировал так, что он совпал с запросом с джойнами.
No. 16342    
>>16341
>Вообще говоря, это нарушение атомарности данных. И проявится оно как только кто-то удалит свой пост. Каскадное удаление для такого поля, естественно, настроить нельзя, и чтобы убрать ссылки на "мёртвый" ответ, придётся делать отдельный запрос по всем постам, да ещё и с LIKE, и вручную изменять эту строку.

Хм действильно. Про удаление поста я не подумал. Думаю тогда в следующей итерации борды буду держать буду отдельную таблицу для рефов.
No. 16351    
Немного статистики.

>>16325
Вариант 2 по сравнению с вариантом 1 на моих тестах даёт выигрыш примерно вдвое.

>>16341
>мускуль вложенный запрос сам оптимизировал
В ситуации, когда учитываются доски, т.е. ключём служит пара (post_id, board_id) он у меня это сделать не смог. Соответственно, >>16333 обгонял по скорости >>16329 почти на порядок.

>>16330
>Иди по порядку и запрашивай информацию по востребованию.
Плохая идея. На тестах я не смог заметить какого-то прироста скорости, а вот дополнительные ограничения на вывод данных (обязательно в том порядке, в котором они идут в посте) это накладывает.
Т.е. еще одна лишняя связь между частями системы, еще одно нарушение инкапсуляции.

>>16327
>нарушает принципы инкапсуляции
Чтобы этого избежать, заводим под это дело отдельный класс (который, очевидно, скоро станет деревом классов), который скрывает от приложения тонкости работы с базой и берёт на себя… wait, мы только что начали делать на коленке свою собственную реализацию ORM.
No. 16352    
>>16351
>Плохая идея.
На самом деле здесь два подхода: произвольный и последовательный доступ к данным. Последовательный доступ обычно используется, если произвольный слишком дорог.

Но в нашем случае затраты на обеспечение произвольного доступа минимальны (но, всё же, не строго нулевые). Вопрос: должны ли мы его обеспечить изначально, если в приложении мы пока можем обойтись последовательным (а затраты на переделку его в будущем будут выше)?
No. 16353    
>>16351
>обязательно в том порядке, в котором они идут в посте
Где ты это там увидел?
Есть реляция X
post_ID->post_stuff
, что, кроме странных случаев, и так с
AUTOINCREMENT PRIMARY KEY
по
post_ID
. Есть реляция Y
post_ID->repy_post_ID
, что тоже, по идее, заполняется инкрементивно по второму параметру.

Когда мы хотим взять информацию о посте с ответами, то
SELECT * FROM X (WHERE ...) AS T; SELECT * FROM Y WHERE post_ID in T.post_ID;

repl=fetch(Y)

while post=fetch(X);

  // Add post details

  while repl and repl.post_ID == post.post_ID:

    // Add reply details

    repl=fetch(Y)


Чем это более связано джойна с последующим выгребанием нужных данных?

>>16341
>И проявится оно как только кто-то удалит свой пост
А если вместо статики пересчитывать строку через тот же concat()?
В конце-концов, можно в самой БД написать функцию, что при запросе будет выдавать посты со всеми ответами в строковом значении.
No. 16354    
>>16353
Сорри, только сейчас заметил, что написал.
Фикшу:

>>16351
>в котором они идут в посте
в котором мы их получили в исходном запросе
No. 16357    
>>16351
>В ситуации, когда учитываются доски
В принципе, то, что вложенный запрос при возможности автоматически преобразовался в джойн, как раз и говорит о том, что последний лучше.
>еще одно нарушение инкапсуляции
При любой работе с результатом запроса напрямую все равно будет получаться процедурный код, а не ООП. При попытке соблюсти ООП - самопальный кривой ORM. Других вариантов нет.

>>16353
>А если вместо статики пересчитывать строку через тот же concat()?
В том смысле, что реально схему ответов хранить в отдельной таблице, а в таблице постов хранить что-то вроде кешированного результата запроса к таблице ответов? Возможно, но придется отслеживать изменения в рефах и обновлять это поле. Делать это в коде в одной транзакции с удалением/перемещением/добавлением поста? Будет работать, но это, вообще говоря, возложение нетипичной функции на логику. Правильно было бы это делать в хранимой процедуре, но я сильно сомневаюсь, что они разрешены на обычных хостингах.

Родина им дала реляционные БД - связывай, нормализуй данные. Не хочу, хочу в них nosql делать.
No. 16358    
Файл: 14940504616.png-(309.04KB, 750×1000, 4d723b2427a0f6253b6ee5ed2e906b49.png)
16358
Какой посоветуете си-подобный скриптовый язык для написания гуев? Хочу чтобы язык был не дохлый, и чтобы была нормальная документация. И чтобы оно было в репах Дебиана.
No. 16359    
>>16358 А попробуй tcl/tk. Он не С-подобный, но всё остальное подходит.
No. 16361    
>>16359
Это шутка? Я немного погуглил, и нагуглил libgtk2-perl и даже libgtk3-perl, похоже оно мне какраз, правда примеры еще не смотрел.
No. 16362    
>>16361 Шутка в чем? Tk сделан для gui специально, скриптовей некуда.
No. 16363    
Файл: 149407194123.png-(28.38KB, 90×128, coverimage-90x128.png)
16363
Анончики, дорогие мои, есть у кого-нибудь gchandbook.org в электронном виде? Жаба душит 80$ отдавать.
No. 16364    
>>16362
Слышал что tk это нечто старое и ужасно выглядящее. Да и синтаксис не сишный, а мне бы сишный.
No. 16365    
>>16364 Ну как бы выбранный Перл тоже не С-подобный.
No. 16366    
>>16363
Заходи на fex.net
Вводи ключ 785192433606

По идее это та книга которую ты хочешь. Там epub.
Если не получится, то сделаю тебе раржпег.
No. 16367    
>>16365
Ну он, ИМХО, среди интерпретируемых языков, наиболее си-подобен.
No. 16374    
Файл: 149409579846.jpg-(11.65KB, 256×256, 1405174852147.jpg)
16374
>>16366
Спасибо огромное, анончик! Она самая.
No. 16378    
Стив, помоги мне понять, как грамотно написать реализацию простой транспортной сети(требуется только находить в ней мин.поток). Пишу на джаве, так как требуется gui, с ним то я, как раз, дружу, в отличии от графов.
No. 16379    
>>16378
Вот тебе пример реализации такой сети (вообще она flow network):
http://algs4.cs.princeton.edu/64maxflow/FlowNetwork.java.html
Зависимости:
http://algs4.cs.princeton.edu/64maxflow/FlowEdge.java.html
http://algs4.cs.princeton.edu/64maxflow/Bag.java.html

Вообще она используется здесь http://algs4.cs.princeton.edu/64maxflow/ чтобы найти
maximum flow / minimum s-t cut. Но по идее реализация сети есть реализация сети, и ты с ней что захочешь сможешь сделать. Скажи если вдруг не подойдет.
No. 16380    
>>16379
Спасибо, попробую разобраться.
No. 16389    
Добрый вечер. Это все я последний вопрос про транспортные сети. Я понял, что у меня проблемы и я нуждаюсь в человеке прерастно владеющим js, знакомым с графами и желательно библеотекой d3. Если кто-нибудь может помочь не за спасибо конечно отзовитесь. Главное, что реально помощь нужна.
Отпишитесь, если можете, буду очень благодарен.
Кода там 150 строк собсно.
No. 16390    
>>16389
Напиши тут что нужно сделать.
No. 16393    
>>16390
Есть 140 строчек кода на js который выполняет поиск максимального потока в транспортной сети. Нужно его разобрать и переделать под поиск минимального потока. Ну или хотя бы пояснить мне че да как в нем работает.
No. 16394    
>>16393
Найди компаратор, поменяй знак.
No. 16395    
>>16389
>>16393
Я порылся еще, и мне кажется, что от тебя хотят чтобы ты решил т.н. задачу "Максимального потока минимальной стоимости". По крайней мере вот человек просит ему помочь найти минимальный поток в графе (а транспортная сеть - это граф): http://stackoverflow.com/q/18598399
>In the literature this is a minimum cost flow problem.
Принятое предложение http://stackoverflow.com/a/19963452 также совпадает с одним из решений задачи максимального потока минимальной стоимости.

Вот реализация решения такой задачи на Java:
https://archive.is/20130124171045/sites.google.com/site/indy256/algo/min_cost_flow

Ты можешь как-то уточнить, что это именно то что от тебя хотят?
No. 16399    
>>16394
Там не все так просто. Там алгоритм немного другой. А точнее измененный.
>>16395
Нет, именно минимальный поток. Алгоритм его поиска есть в "кофман - введение в прикладную комбинаторику" на 370 страничке, если меня не подводит память.
No. 16400    
>>16399
Вот сама функция которая ищет максимальный поток.
vs -vertex set и es edge set соответственно.
https://hastebin.com/nisaveciqo.js
No. 16413    
>>16399
>>16400

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

Первый шаг в поиске максимального потока: найти любой поток, удовлетворяющий ряду условий. Можно взять нулевой поток.
Первый шаг в поиске минимального потока: найти любой поток, удовлетворяющий другому ряду условий. В частности, для всех дуг на пути поток через них должен быть >= их емкости.
Что делает жаваскрипт? Насколько я понимаю, он берет именно нулевой.
No. 16414    
>>16399
>>16400
>>16413

Второй шаг в поиске максимального потока: найти полный поток. Для этого искать пути, все дуги в которых не насыщены, и увеличивать поток через них до насыщения хотя бы одной. Повторять пока не останется путей со всеми ненасыщенными дугами.
Второй шаг в поиске минимального потока: найти полный поток. Для этого "уменьшать поток, идущий через дуги от входа к выходу". Очень непонятный шаг, к которому не то что бы давали какие-то объяснения.
Что делает жаваскирипт? Он начинает искать пути с ненасыщенными дугами и по ходу дела помечает пройденные вершины. Это инициируется в мейн лупе, вызовом:

  while (path = findAugmentingP(rG)) {
    augment(path, rG);
    logState(rG, path);
  }

findAugmentingP(rG)
- это и есть поиск пути с ненасыщенными дугами. Эта функция ищет ненасыщенные пути, и заодно помечает пройденные вершины. Как только она находит "ненасыщенный" путь, мы переходим в тело цикла и жаваскрипт сразу пытается насытить в таком пути хотя бы одну дугу, вот в этой функции:
augment(path, rG)

Тут жаваскрипт проходит все дуги, смотрит сколько у них осталось емкости до насыщения, и выбирает минимальную остаточную емкость:

var b = bottleneck(path.slice(0), rG);

Потом он просто повышает поток на всём пути на это значение, чтобы насытить дугу:

    path.forEach(function(v) {
      if (u === v) {return;}
      ...
      fEdge.flow += b;
      bEdge.flow -= b;

      u = v;
    });

И так до тех пор пока таких путей не останется.
No. 16415    
>>16399
>>16400
>>16414

Третий шаг в поиске максимального потока: собственно найти максимальный поток. Для этого помечаем + все вершины, у которых есть ненасыщенные дуги и - все вершины у которых есть дуги с ненулевым потоком. Если в этот список попадает и выход, то находим путь до него, в котором все вершины помечены и увеличиваем там поток на некоторое вычисляемое значение. Повторяем этот шаг заново, пока выход попадает в список помеченных вершин.
Третий шаг в поиске минимального потока: собственно найти минимальный поток. Для этого помечаем + все вершины, у которых есть дуги с потоком, превышающим емкость и - все остальные вершины на пути. Если в этот список попадает и выход, то находим путь до него, в котором все вершины помечениы и уменьшаем поток через него на неуказанное значение. Повторяем этот шаг заново, пока выход попадает в список помеченных вершин.
Что делает жаваскрипт? У жаваскрипта третий шаг скомбинирован со вторым. Также в коде для этого выполнена оптимизация.
Обрати внимание на эти строчки и комментарии:

      // Consider edges which have nonzero residual flow.
      var es = rG.get(u).filter(function(e){return e.flow>0;});
      ...
      // return the min residual capacity of any edge on the path.
      ...
      if (edge.flow < min) {min = edge.flow;}

Т.е. автор кода говорит, что во flow он держит не просто поток через дугу, а конкретно остаточный поток. Т.е. то, что осталось "добить" до насыщения дуги.

Вот в этом куске, упомянутом в шаге 2 он повышает поток на дуге до насыщения, по правилам описанным в шаге 3:

    path.forEach(function(v) {
      ...
      fEdge.flow += b;
      bEdge.flow -= b;
      ...
    });

No. 16416    
>>16399
>>16400
>>16415

Основная проблема с поиском минимального потока в том, что он плохо описан в книге.
Это французская книга 68го года, переведенная на русек в 75м году. И либо автор что-то не дописал, либо переводчики нормально не перевели то что сами не поняли. Даже пример на поиск минимального потока расписан гораздо менее детально, чем пример для поиска максимального. Вместо нормального объяснения постоянные отсылки к плохо определенным правилам и "легко увидеть, что".

Теперь перейдем к тому, как жаваскрипт генерирует граф для прохода.


var rG = initResidual(vs,es)
...
  function initResidual(vs,es) {
    var g = d3.map(),
        outgoing,
        incoming;

    vs.forEach(function(v) {
      g.set(v.id, []);
    });

    es.forEach(function(e) {
      var bEdge = {target: e.target.id, flow: e.capacity};
      var fEdge = {target: e.source.id, flow: 0};

      outgoing = g.get(e.source.id) || [];
      outgoing.push(bEdge);

      incoming = g.get(e.target.id) || [];
      incoming.push(fEdge);

      g.set(e.source.id, outgoing);
      g.set(e.target.id, incoming);
    });

    return g;
  }


В частности, как инициализируются дуги:

      var bEdge = {target: e.target.id, flow: e.capacity};
      var fEdge = {target: e.source.id, flow: 0};

Как мы видим, у обеих дуг не указывается емкость, потому что под flow подразумевается всегда остаточный поток. Поэтому исходящей дуге всегда выставляется остаточный поток равный ёмкости, а входящей 0.

Надо ли это как-то адаптировать к поиску минимального потока - не очень понятно. Еще надо понять, что ж нам надо-то с дугами делать.
No. 16417    
Файл: 149531843428.jpg-(28.14KB, 640×480, azumanga15007.jpg)
16417
>>16399
>>16400
>>16416

Дальше только тупые предположения.

Возможно, остаточный поток через исходящие дуги надо задать отрицательным (потому что они все перенасыщены), при этом на входящие оставив 0.

Если теперь нам надо помечать перенасыщенные вершины, а не вершины с ненулевым потоком, то возможно условие
var es = rG.get(u).filter(function(e){return e.flow>0;});

Надо заменить на
var es = rG.get(u).filter(function(e){return e.flow<0;});


Если все дуги изначально перенасыщены, то возможно, что нам надо снижать поток через них до их ёмкости. Т.е. вместо

    min = parseFloat('Infinity');
    ...
    if (edge.flow < min) {min = edge.flow;}
    ...
    return min;

Написать

    max = parseFloat('-Infinity');
    ...
    if (edge.flow > max) {max = edge.flow;}
    ...
    return max;

А вот это

    es.forEach(function(l) {
      var edge = rG.get(l.target.id).filter(function(e) { return e.target === l.source.id})[0];
      l.flow = edge.flow;
    });

    // Display the max flow
    var sinkIncedent = rG.get(1);
    var total = 0;
    sinkIncedent.forEach(function (e) {
      total += e.flow;
    });

Заменить на

    var total = 0;
    es.forEach(function(l) {
      var edge = rG.get(l.target.id).filter(function(e) { return e.target === l.source.id})[0];
      l.flow = l.capacity + edge.flow;
      if(l.target.id === 1) {
          total += l.capacity;
      }
    });

    // Display the max flow
    var sinkIncedent = rG.get(1);
    sinkIncedent.forEach(function (e) {
      total += e.flow;
    });


Но я крайне сомневаюсь что оно так будет работать.
No. 16420    
Попробую еще тут спросить.
>Ни кто не сталкивался с таким? Использую в приложении chromium web view версии 58.0 на Android 6. Загружаю в него локальную страницу с формой, скриптом на js и рекапчей. В рандомный момент (иногда сразу иногда через пару часов работы приложения) после загрузки страницы перестают работать кнопки (input) и не нажимается галочка на рекапче. При этом нет никаких сообщений в logcat и консоли JavaScript. Обновление страницы или повторная загрузка не помогают. Пересоздание webview тоже не помогает. Баг исчезает только после полного перезапуска приложения.
No. 16421    
Как на MySQL написать оракловскую конструкцию
datetime_column >= trunc(add_months(current_date,-1),'mm')

and datetime_column < trunc(add_months(current_date,2),'mm')

No. 16422    
>>16421
Если перекладывать её дословно, то можно вот так:

datetime_column >= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), 2, MONTH)), 1, DAY)
datetime_column < DATE_ADD(LAST_DAY(DATE_ADD(NOW(), 1, MONTH)), 1, DAY)

Как видишь, поскольку в MySQL проще получить последний день месяца, чем первый, то делается слегка наоборот.
No. 16423    
>>16422
Послал тебе лучей бобра, завтра попробую. А то у меня нет нормального доступа к базе, только лагучая приблуда на java.
No. 16424    
>>16420
Я бы посоветовал обмазаться дебагом сильнее. Повесь на все возможные рабочие события коллбеки, который будут плеваться в console.log, банально по всяким тач-ивентам, клик-ивентам и т.д. И потом включай удаленный дебаг по кабелю и смотри что происходит когда приложение "подвисло" - дергаются ли вообще события эти или нет, ну и всякое такое. На основании этого можно будет уже дальше дебажить. Ибо webview в целом (и ведра в особенности) это боль и там вагон и тележка потенциальных проблем может быть.
No. 16425    
>>16424
Нашел ошибку. Проблема была в том что при уничтожении activity таймеры webview ставились на паузу методом pauseTimers, а при создании activity нужно было вызывать resumeTimers, а в коде этого не было.
No. 16429    
Файл: 14957024976.jpg-(79.41KB, 500×457, 1303722822324.jpg)
16429
Лолнуб вкатывается в нить.
Очень сильно хочется качать мангу вот прямо роботом, а не руками. Пытался подружиться с wget, но не совладал с ним. Испытал множество острых ощущений, ну вы понимаете.
Итак, идея: качаем страницу галереи по введёной пользователем ссылке (к примеру, https://здесьбылсайт.net/g/187778/), выделяем из исходного текста страницы ссылку (одну, там прямых ссылок на полноразмерные картинки со страницы нет и цифры в адресе страницы и адресах картинок не совпадают) типа <meta itemprop="image" content="https://t.здесьбылсайт.net/galleries/1029160/cover.jpg">;, удаляем лишнее до получения ссылки вида https://t.здесьбылсайт.net/galleries/1029160/.jpg. Заменяем https://t на https://i, на месте подставляем последовательные числа от единицы до, к примеру, пяти тысяч, передаём полученный список адресов на wget с задержкой между загрузками 10-15 секунд, заканчиваем работу скрипта при первом получении 404.
Проблема в том, что я хтонический чайник и не умею в скрипты. Автобус, сделай из меня нечайника а лучше набросай этот проклятый скрипт за меня.
No. 16430    
Файл: 149570268271.jpg-(67.83KB, 500×446, Nyoro~n.jpg)
16430
И в разметку тоже не умею.
No. 16431    
>>16429
А просто ограничить область вгету и запустить рекурсивно уже от https://t.здесьбылсайт.net/galleries/1029160/cover.jpg не прокатит?
No. 16442    
>>16429
Я бы рекомендовал делать это не прямо баш скриптом, а каким-нибудь приблудой с headless браузером, например СasperJS. Тогда ты просто будешь ходить по этому сайту, почти как обычно, программно кликая по штатным элементам навигации, и сохраняя полноразмерные картинки. Только юзер агент не забудь проставить Не хочешь так попробовать?
No. 16447    
Файл: 149606780837.png-(45.62KB, 850×529, face.png)
16447
Как быстро и безболезненно сделать такой интерфейс на С++ под линукс? Весь мой опыт графики это вывод графиков в питонах-матлабах и у OpenCV есть свой минималистичный набор - картинка и трэкбары сверху, а тут препод уперся что можешь писать под своими прыщами, но без гуя никак.
No. 16448    
>>16447
Qt?
No. 16449    
>>16448
Слышал про Qt и Gtk, но они выглядят слишком сложно для моей задачи. Идеально подошел бы какой-то конструктор с минимум украшательств и кастомизации. Или годный туториал с примерами, покрывающими нарисованные 3.5 элемента и работу с OpenCV.
No. 16450    
>>16449
Скачивай Qt Creator и делай. Твою форму там 15 минут набросать максимум.
No. 16451    
>>16447
Если тебе нужно под X, без лишней дребедени, то подключай и пользуй Xlib: https://en.wikipedia.org/wiki/Xlib
No. 16452    
>>16450
Пытаюсь в Qt. Сейчас у меня выводятся фреймы таким образом
MainWindow w;
CVImageWidget* imageWidget = new CVImageWidget(); // библиотечный виджет для OpenCV
w.setCentralWidget(imageWidget);
imageWidget->showImage(frame); // frame это cv::Mat кадр обрабатываемого видео
Проблема в том, что что бы я не набросал в mainwindow.ui, выводится только видео без интерфейса, полагаю, это потому что w.setCentralWidget(imageWidget);
Вопрос, как сделать так чтобы видео выводилось только в виджете, который большое поле справа на картинке? Допустим, это у меня QObject, который QWidget, у которого objectName = cvframe
>>16451
Спасибо, на очереди если не взлетит быстро разобраться с Qt.
No. 16460    
>>16417
Наверно очень поздно, но я сам все написал таки. Использовал такой алгоритм:
1. Составляем поток, который для каждой дуги >= пропускной способности.
2. Получаем новые пропускные способности, вычитая из нашего нового потока старые пропускные способности.
3. Ищем в новой тс максимальный поток любым способом.
4. Вычитаем из самого первого "увеличенного" потока найденный в прошлом пункте максимальный и получаем искомый минимальный поток.

Еще раз извиняюсь за то, что ответил так поздно, просто сделал, сдал, и забыл. Чуть позже могу скинуть ссылку на работающий код.
No. 16464    
>>16460
Конечно давай ссылку, поместим в базу знаний.
No. 16478    
Файл: 14967745474.png-(94.37KB, 500×700, pmv0xuxkx82y.png)
16478
Подскажите, пожалуйста, как сделать так, что бы эта фигня заработала также для остальных браузеров, а не только для вебкита:

display: grid;
grid-template-columns: repeat(auto-fill, 200px);
grid-gap: 10px;
grid-auto-rows: minmax(100px, auto);

Спасибо.
No. 16479    
>>16478
По-идее у тебя нет вариантов.

CSS grid имеет проблемы даже в свежих версиях Firefox. В IE/Edge пока вообще без вариантов. А еще без вариантов с кучей зоопарка на мобилках (как минимум, стоковый Android браузер, который не-Chrome, и поделки на его основе). Нормальных полифилов для старого говна, вроде как, так и не осилили сделать.

Альтернатива для тебя это всякие CSS бойлерплейты с сеткой, но они все в той или иной мере днище, которое для настоящего CSS Grid не дотягивают. Поэтому либо страдай и подбирай вариант бойлерплейта, либо отказывайся от затеи и верстай ручками требуемое добро, а через пару лет уже сможешь делать все уже как белый человек.
No. 16480    
Файл: 14967848546.png-(74.97KB, 500×810, this-was-a-great-idca-tiling-pixel-gif-repeatedly-.png)
16480
>>16479
Требуемое добро у меня динамично.
Сделаю редирект по юзер агенту :3
No. 16557    
Я правильно понимаю, что с голым Пайтон податься некуда?
No. 16558    
>>16557
Осторожно предположу, что с голым пайтоном можно вполне себе попасть на джуниорскую позицию. Но опять же, даже если требуют понимание какого-то фреймворка, то на начальную позицию хватит знаний полученных во время прохождения туториала по данному фреймворку с возможным штудированием материалов типа 100 вопросов по фреймворку Х на собеседования обычно ничего сильно больше не требуется. Например, ты можешь пройти туториал по популярному у питонистов Django
No. 16563    
Файл: 149778409350.jpg-(134.49KB, 768×512, Python18-768x512.jpg)
16563
Есть такой небольшой код: https://pastebin.com/r3YNJSWP
Можно ли как-нибудь обойти РКН, да так, чтобы скрипт работал и в винде и на линуксе?
No. 16565    
>>16563
Ты хочешь скрипт, который сам подключается к прокси или VPN из списка. Соответственно, тебе надо найти прокси, или VPN, которыми ты можешь воспользоваться, или ресурс-анонимайзер с api, который сможет сделать доставку веб-контента для тебя. После чего написать код который будет с этим всем работать. Если ты хочешь это для личного пользования, то тебе проще арендовать небольшой сервер и устроить себе проксирование / vpn через него

Прокси ты можешь передать параметром proxies в своём requests.get():
http://www.python-requests.org/en/latest/user/advanced/#proxies

К VPN эксклюзивно для скрипта подключиться не получится, придётся дергать установленный предварительно OpenVPN и подключаться через него.

Если ты не боишься утечки информации в третьи руки, или делаешь всё в спортивных целях, то можешь переиначить под свои нужды вот это https://gist.github.com/Lazza/bbc15561b65c16db8ca8 тут работают с апи впн гейт, выбирают сервер и подключаются к нему через OpenVPN а для прокси взять библиотеку которая граббит рабочие прокси с какого-то ресурса, например ProxyBroker: https://github.com/constverum/ProxyBroker#basic-code-example (требует питон 3.5)

С прокси в таком случае получается всё достаточно просто - заводишь поиск прокси, и как только рабочий / подходящий прокси найден - грузишь через него свою страницу.
No. 16569    
>>16565
Спасибо большое!
No. 16571    
>>16569
Рады помочь
No. 16572    
Файл: 149786444868.jpg-(20.13KB, 599×337, Kyon32.jpg)
16572
Аноним заметил, что прошлую нить таки отправили архив и обновил ссылки в базе знаний
No. 16574    
>>16565>>16563
А можно просто настроить прокси с antizapret.prostovpn.org
No. 16575    
>>16574
А можно обеспокоиться информированностью российского васяна тем, куда ты ходишь и что смотришь по http и использовать другие прокси.
No. 16577    
>>16575
Можно и в интернет не с РФ выходить.
А для данного ТЗ решение проще некуда. Тем более что первый ответ тоже предлагает вариант с
>Если ты не боишься утечки информации в третьи руки
No. 16578    
>>16577
Утечка в любом случае возможна. Вопрос в чьи руки. К тому же на антизапрете решения для браузеров/впн, а запрашивалось для скрипта.
No. 16580    
>>16578
>Вопрос в чьи руки.
Во-первых, у опенВПН тоже есть русские ноды. Во-вторых, в случае с антизапретом, трафик на не заблоченные ресурсы вообще идёт напрямую.
>К тому же на антизапрете решения для браузеров/впн, а запрашивалось для скрипта.
http://lmgtfy.com/?q=python pac
No. 16581    
>>16580
>у опенВПН тоже есть русские ноды
И что?
>трафик на не заблоченные ресурсы вообще идёт напрямую
Где я про них хоть слово сказал? Раз уж ты поднял тему - ничто не мешает запихнуть в pac незаблоченый ресурс.
>http://lmgtfy.com/?q=python pac
Так это ты не мне, а автору вопроса предлагай. Алсо pac для запросов на один домен - оверкил.
No. 16583    
>>16581
>Раз уж ты поднял тему - ничто не мешает запихнуть в pac незаблоченый ресурс.
>Алсо pac для запросов на один домен - оверкил.
Ну тогда пусть >>16563 и использует только как проксю и без PAC, если он собирается только на данбуру ходить. Довод про незаблоченные ресурсы отпадает.
>Так это ты не мне, а автору вопроса предлагай
Я предложил. А возникать начал уже не он.
Пусть сам и решает тогда.
</discussion>
No. 16584    
>>16580
>>16581

>Чтобы не сбивать новичков с толку, а также не разбавлять полезную информацию мусором, беспредметные споры типа "какой язык / парадигма / библиотека / етц лучше" здесь запрещены.
No. 16586    
>>16583
Так его вопрос был как, а не какую.
No. 16589    
Файл: 149789982511.jpg-(69.21KB, 677×451, strashnaya-istoriya-kotoraya-tolkaet-nas-k-neozhid.jpg)
16589
Ребят, я >>16563-кун.
Во-первых, >>16565, ещё раз спасибо. vpngate.py не подошёл, так как на винде нет предустановленного OpenVPN. С ПроксиБрокером возникла какая-то проблема, а мне её лень было решать хотя я пытался, честно. Но я выбрал путь прокси.
Во-вторых, >>16574-кун, ты мне тоже помог, тебе тоже спасибо. Я сначала написал вот такую фигулину: https://pastebin.com/UP97DW0z , но сейчас, прочитав нить, понял, что можно было юзать pypac я ведь всё верно понял?
Для меня остались непонятны следующие вещи: почему pac для запросов на один домен - это оверкил и что вообще такое оверкил
No. 16591    
>>16589
>что вообще такое оверкил
Обычно под оверкиллом в программировании имеют в виду использование очень широкого инструментария для решения маленькой задачи.

Вот например, PAC:
>A proxy auto-config (PAC) file defines how web browsers and other user agents can automatically choose the appropriate proxy server (access method) for fetching a given URL.

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

>PyPAC is a pure-Python library for finding proxy auto-config (PAC) files and making HTTP requests that respect them. PAC files are often used in organizations that need fine-grained and centralized control of proxy settings.

Что для твоей задачи достать картинки с данборы вроде бы и оверкилл, потому что тебе не то что бы даже файл для хранения прокси был нужен. But hey, если это удобно, то почему бы не пользоваться?
No. 16593    
>>16591
А если, к примеру, мне захочется расширить приложение в будущем, добавить ещё несколько буруподобных сайтов, то использование очень большого инструментария того же самого PAC в настоящий момент то есть когда я использую PAC только лишь для гелбуры будет являться оверкиллом?
No. 16594    
>>16593
>добавить ещё несколько буруподобных сайтов
С учётом того, что они практически все забанены в рф - пожалуй подразумевая, что ты используешь антизапретовский рас. На деле пока у тебя не хайлоад можно извращаться как угодно.
No. 16624    
Какие есть событийно-ориентированные сетевые фреймворки для Ruby (типа питоновского Twisted)? Если их несколько - какой из них наиболее распространённый (соответственно, наиболее документируемый и развивающийся)?
Просьба не кидаться говном за руби - ни разу не айтишник, тыкаю просто из интереса.
No. 16626    
>>16624
А, всё, нагуглил
EventMachine
, вопрос закрыт.
No. 16627    
Алсо, такой вопрос - как гемы ставить локально (по аналогии с
pip install --user
), либо использовать виртуальное окружение вроде virtualenv? Находил только предложения использовать rvm, устанавливать локальный экземпляр интерпретатора и устанавливать гемы в его окружении.
No. 16629    
>>16627
gem install GEMNAME --user-install
[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]

Удалить сообщение []
Пароль  
[Mod]