[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 кБ.
  • Ныне 2590 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
No. 16637    
Прочитал книгу о ДРАКОНе. Многие идеи мне очень понравились, например сделать алгоритмы понятными (эргономичными), визуальное алгоритмирование и т. д. Сам я люблю когда что-либо представлено наглядно, графически и аккуратно. Есть утверждение, что этот язык применялся в создании Бурана (т. е. язык подходит даже для космической отрасли), но я НЕ ЗНАЮ, правда ли это.
Вопросы: есть ли у языка ДРАКОН перспективы? Возможно ли в принципе на нем создание серьезного программного обеспечения? Что можно улучшить, чтобы его можно было использовать для такого ПО? Или это фундаментально ошибочный подход (т. е. программирование должно быть ТОЛЬКО с использованием текстовой нотации)?
Дайте, пожалуйста, максимально объективную оценку. Из-за недостатка опыта и знаний (писал лишь учебные скрипты на Питоне), мне нужно внешнее адекватное мнение.
No. 16638    
>>16637
Любой нормальный айтишник должен избавиться от необходимости визуализации информации. Консоль, текстовые языки, вообще любой текстовый вывод, максимальная интеграция с клавиатурой и минимизация работы с графическими средами.
Графические языки в данном случае являются однозначным злом, которые навсегда портят ум человека, который с этим работает. Стоит привыкнуть к тектовой информации и текстовым интерфейсам, затем мозг сам будет создавать внутреннее представление на основе этого.
No. 16641    
>>16637
>>16638
> беспредметные споры типа "какой язык / парадигма / библиотека / етц лучше" здесь запрещены
На вкус и цвет фломастеры разные. От конкретного программиста зависит, какой способ представления абстрактного синтаксического дерева для него удобнее.
> однозначным злом, которые навсегда портят ум человека, который с этим работает
Когда-то Дейкстра в таком же духе отзывался о Бейсике. Это не помешало в то же самое время Биллу Гейтсу и Полу Аллену начать бизнес на написании интерпретатора BASIC для первых микрокомпьютеров и продаже копий. Торвальдс начинал с Бейсика для Commodore VIC-20.
No. 16645    
>>16641
Ни в коем случае не хотел вызвать спор лучше/хуже. Просто каждый раз, когда пишу программу, мне необходимо нарисовать схему, алгоритм. И вот правильно ли это, хотел узнать.
No. 16646    
>>16638
Ты какую-то глупость пишешь. Люди лучше всего понмают как раз на визуальных примерах. Графики, рисунки, схемы, вот это вот не случайно используется при объяснении чего угодно.

Консолька так вообще пережиток прошлого когда компьютеры ну просто не могли что-то другое. Да, грепнуть что-то, автоматизировать, тут она удобна. Но гую одно. Консольке дрyгое. Лучший интерфейс это тот, который не замечаешь, который понятен интуитивно, без learning curve, магия предикции. Dixi.
No. 16647    
Хаскель или R? Питон и так знаю.
Я доучиваюсь на математика, проприетарщина не нужна, octave это не серьезно. Область применения - тяжеловесные вычисления, в том числе и на видеокартах, всевозможный машоб и моделирование процессов, может быть с простеньким гуем. Требуется быстродействие, простота, меньше "программирования" (ООП-няши могут укусить меня за зад).
No. 16649    
Файл: 149892243922.gif-(5.30KB, 294×209, UML_logo.gif)
16649
>>16645
>>16637
В целом, визуальное программирование использовалось для самого разного софта и используется до сих пор. В первую очередь в мире используется UML: https://en.wikipedia.org/wiki/Unified_Modeling_Language

Сам UML-не язык программирования, но для него существуют кодогенераторы. С помощью UML-диаграмм до сих пор создают достаточно много всего, в том числе компоненты промышленного софта. Собственно, работает это так - человек определяет в редакторе диаграммы, а кодогенератор на этапе компиляции сам это превращает в код на нужном языке. Так что вопрос "можно ли это использовать для софта Х" не особо стоит.

Теперь про ДРАКОН: https://en.wikipedia.org/wiki/DRAKON
Дракон попытался совместить язык моделирования и язык программирования.

>Unlike UML's philosophy, DRAKON language philosophy is based on being augmented if needed, by using a hybrid language, which can be illustrated as "eating code snippets from text language used". This way, DRAKON stays a simple visual language, that can, in fact, be used itself as an augmentation language for a programmer, who is interested in improving ergonomics of coding process or to make code easy to review and understand.

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

>Such approach allows to view DRAKON as a way to add syntactic sugar into any supported programming language user programmer is qualified to use.

Т.е. ты можешь смело использовать свой DRAKON в связке с питоном (или еще 13 поддерживаемыми языками), расширять его, и ничего не бояться. В программировании главное - не заболеть догматизмом, делай как тебе удобно. За исключением ситуаций, когда удобно тебе, но неудобно твоей команде
No. 16650    
>>16647
Пока думал над твоим вопросом, нашел такое сравнение-смехуёчек: http://www.hammerprinciple.com/therighttool/items/r/haskell

Особенно веселые вопросы респондентам типа:
>The thought that I may still be using this language in twenty years time fills me with dread

Но вообще, я бы сказал что бери Haskell, если ты больше программист. Если ты больше математик - то бери R. хотя есть мнение что он хорошо подходит для прототипирования, но не очень для перелопачивания реальных данных Алсо, оба языка имеют свои версии фреймворка OpenCL, так что распределенные расчеты ты сможешь обустроить на любом.
No. 16666    
В следующем семестре, среди прочего, у меня будет курс OpenGL на плюсах под линуксом, как и почти все однокурсники, я решил подготовиться за лето и заранее написать по нему семестровый проект, что-то вроде https://www.youtube.com/watch?v=QUIRvJKroMk
Посоветуйте, пожалуйста, туториал как сделать очередной минималистичный дженерик 3д спейсшип симулятор, можно на английском. Определенный опыт в плюсах у меня есть, но я не буду против пояснений для совсем нубов, на всякий случай.
No. 16668    
>>16666
Не лучший пример, не лучшая работа с OpenGL, но с этого можно начать: http://cs.lmu.edu/~ray/notes/flightsimulator/
No. 16670    
Доброй ночи товарищи! Задача такая: нужно генерить статичную сцену из объектов в unreal для vr. Пусть это будут шарики, некоторого разного радиуса, координаты, и радиус для каждого из которых берется из json файла ну вообще говоря из внешнего источника, как это сделать? Я совсем не могу сообразить.
No. 16671    
>>16670
Насколько понимаю, ты хочешь спавнить объект из кода. Мне кажется тебе может помочь вот эта информация: https://answers.unrealengine.com/questions/60897/spawn-actorobject-from-code.html
No. 16672    
>>16671
Вроде как то что нужно, но разобраться все равно не могу...
No. 16673    
>>16672
Что на данный момент уже делает твой код?
No. 16674    
>>16673
Вообще говоря, его пока что нет. Моя задача так сказать изменилась и надо спавнить шарики координаты которых в json файле через blueprint. Как это сделать, я пока что, не знаю. Совсем.
No. 16676    
>>16674
Ну, цели которых тебе надо достичь пошагово выглядят как-то так:

Сфера:
1) Сделать блупринт
2) Создать объект из блупринта на карте в редакторе
3) Создать объект из блупринта на карте из кода
4) Создать кучу объектов из одного блупринта на карте, из кода
5) Создать кучу объектов из блупринта с разными радиусами на карте, из кода

Чтение из файла:
1) Подгрузить файл с координатами в движок как ассет
2) Подгрузить файл с координатами в момент загрузки карты
3) Считать и распарсить координаты из файла, сложить себе куда-то

После чего тебе надо совместить результаты своих трудов.

На каком шагу по каждому направлению ты сейчас?
No. 16677    
>>16676
Я умею из blueprint-а создавать кучу шариков на карте в рандомных местах по клику на клавишу.
Грубо говоря я понимаю как, например, делать их разного размера, и, в данный момент, ковыляю плагин VaRest, так как данные мне по условию заачи поставляются в json файле.
No. 16679    
>>16677
Я совсем не уверен, что тебе нужен VaRest, учитывая что это плагин скорее для работы с REST API, и насколько вижу из описания, они там тебе вообще предлагают парсить жсон не локально.

Как насчет того чтобы воспользоваться внутренним инструментарием для JSON?

https://answers.unrealengine.com/questions/80902/how-i-can-parse-json-data-with-a-standard-rountine.html
No. 16680    
>>16677
По поводу считать из файла, на всякий случай:
https://docs.unrealengine.com/latest/INT/API/Runtime/Core/Misc/FFileHelper/LoadFileToString/index.html
No. 16684    
>>16679
Проблема в том, что я, пока что освоил только blueprint кое как. Что и куда писать на плюсах я пока еще не понимаю.
No. 16685    
>>16684
А добавить внутрь блупринта ноду для загрузки файла, по этой инструкции сможешь?

https://answers.unrealengine.com/questions/120392/how-can-i-load-text-from-file-with-blueprint.html
No. 16686    
Файл: 149944094691.jpg-(24.00KB, 561×225, 8OzSEbbThDc.jpg)
16686
>>16685
Вот как раз щас с этим вожусь.
No. 16687    
>>16685 никак не могу понять почему ue не хочет класс C++ cоздать...
No. 16688    
>>16687
Но ведь он не "не хочет". Он пишет, что "Всё круто, но надо перекомпилировать модуль MyModule, чтобы твой класс появился в ContentBrowser"
No. 16689    
А как его, собственно, перекомпилировать?
No. 16690    
>>16686
>To compile you should press the "Compile" button aside to the "Build" button. But if it failed to compile the first time you should see the log and understand why it failed, probably something is not right.

А что там в Output Log?

Также я смотрю что люди пишут в ветке про лоадер I had to add public: after GENERATED_BODY() to be able to use the load function
No. 16691    
>>16689
Еще один вариант действий описан здесь:
https://www.reddit.com/r/unrealengine/comments/5t0hm5/creating_c_class_breaks_project/
No. 16692    
>>16690
Вот что в OutLog-е
https://pastebin.com/3YRQRYWS
No. 16693    
>>16691
Я не могу понять, как я должен запустить свой проект в студии. Я ведь создавал проект для blueprint-а, а банальное открытие в студии папки с проектом ничего не дает.
No. 16695    
>>16692
Внезапно, у тебя какая-то проблема при сборке VaRest?
В конце лога:

Messages while compiling C:\Program Files\Epic Games\UE_4.16\Engine\Intermediate\Build\BuildRules\UE4Rules.dll:

c:\Program Files\Epic Games\UE_4.16\Engine\Plugins\VaRest-1.1-r14\VaRest-1.1-r14\Source\VaRestEditorPlugin\VaRestEditorPlugin.Build.cs(5,14) : error CS0101: ?????࠭?⢮ ???? "<??????쭮? ?????࠭?⢮ ????>" 㦥 ᮤ?ন? ??।?????? ??? "VaRestEditorPlugin"

c:\Program Files\Epic Games\UE_4.16\Engine\Plugins\VaRest-1.1-r14\VaRest-1.1-r14\Source\VaRestPlugin\VaRestPlugin.Build.cs(7,15) : error CS0101: ?????࠭?⢮ ???? "UnrealBuildTool.Rules" 㦥 ᮤ?ন? ??।?????? ??? "VaRestPlugin"


При этом в начале лога:

LogPluginManager:Warning:
Plugin 'VaRestPlugin' exists at '../../../Engine/Plugins/Marketplace/VaRestPlugin/VaRestPlugin.uplugin' and '../../../Engine/Plugins/VaRest-1.1-r14/VaRest-1.1-r14/VaRestPlugin.uplugin' - second location will be ignored


Т.е. он по идее должен игнорировать папку
>../../../Engine/Plugins/VaRest-1.1-r14/VaRest-1.1-r14/
Но всё равно лезет туда и нарывается на ошибку. Ты можешь временно убрать плагин оттуда, просто чтобы посмотреть что изменится?
No. 16696    
>>16692
Собственно, на странице VaRest написано:
>1.1-r14
>UE4 Build 4.10-12
А у тебя как бы UE 4.16.2 Может дело в том, что плагин протух не годится для твоей версии движка?
No. 16697    
>>16695
>>16696
Да, ошибка была в наличии VaRest...
No. 16699    
Файл: 149946037099.jpg-(55.61KB, 1083×278, 9Qq4Fw-Qh-Y.jpg)
16699
Я ведь правильно понял... Мне нужно file->New c++ class-> создать новый класс и запихнуть в него тот код?
No. 16700    
>>16699
Нашел вот такой гайд
https://wiki.unrealengine.com/Custom_Blueprint_Node_Creation
Однако даже Node с Hello World у меня сделать не получается...
No. 16701    
>>16700
А что именно не получается? Ошибка? Нода не показывается в списке?
No. 16702    
>>16700
Вот в 2017м году человек пишет, что чтобы ноды показались, ему пришлось все декларации функций в h-файле поместить в секцию public: которую он объявил после GENERATED_BODY()
No. 16703    
Файл: 149946333521.png-(18.91KB, 813×292, Screenshot_1.png)
16703
>>16701
Ну вот на данный момент кое что таки подсвечивается красненьким хотя я понял почему было так, как на прошлом скрине, надо было класс не пустой создавать, а blueprint librari (что то такое)
No. 16704    
>>16703
Насколько могу судить, оно не видит классов FFileHelper и FPaths. Тебе надо заинклюдить header-файл который их содержит. В доках в самом низу написано в каком header-файле каждый класс:
https://docs.unrealengine.com/latest/INT/API/Runtime/Core/Misc/FFileHelper/index.html
https://docs.unrealengine.com/latest/INT/API/Runtime/Core/Misc/FPaths/index.html
Базово тебе нужно инклюднуть FileHelper.h и Paths.h и всё другое что оно не найдет, если такое будет
No. 16705    
>>16703
Проблемы начинаются со сборки: вот такой вывод...

2>c1xx : fatal error C1076: ограничение компилятора: достигнут предел внутренней кучи; воспользуйтесь /Zm для задания большего значения
2>c1xx : error C3859: превышен диапазон адресов виртуальной памяти для PCH; повторите компиляцию с параметром командной строки "-Zm93" или большим
2>c1xx : fatal error C1076: ограничение компилятора: достигнут предел внутренней кучи; воспользуйтесь /Zm для задания большего значения
2>ERROR : UBT error : Failed to produce item: C:\Users\Tom\Documents\Unreal Projects\MyProject\Binaries\Win64\UE4Editor-MyProject-7780.dll
2>Total build time: 11,23 seconds (Local executor: 0,00 seconds)
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets(44,5): error MSB3075: команда ""C:\Program Files\Epic Games\UE_4.16\Engine\Build\BatchFiles\Build.bat" MyProjectEditor Win64 Development "C:\Users\Tom\Documents\Unreal Projects\MyProject\MyProject.uproject" -waitmutex" завершила работу с кодом 5. Убедитесь в наличии достаточных прав для выполнения этой команды.
2>Сборка проекта "MyProject.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 1, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

No. 16706    
>>16705
Начнем разбирать проблемы сверху. Компилятор просит тебя дать ему больше памяти. Дай их ему!

>Modifying VCToolChain.cs to /Zm400 fixed it for me

Открой VCToolChain.cs и поменяй там значение параметра Zm. Компилятор просит от тебя хотя бы 93 мегабайта, но лучше дать ему больше.

Люди пишут также о таких странностях:
>In VCToolChain.cs (part of UnrealBuildTool) you can find /Zm1000. I've found I've had to reduce this number, not increase it. I've changed it to /Zm400.

Посмотри сколько у тебя там роздано памяти, добавь по необходимости.
No. 16710    
>>16706
Решил свою проблему увеличением размера файла подкачки.
No. 16712    
Ну, собственно осталось только одно. У меня есть нода для чтения из файла и записи в файл. Мне как то нужно считать json файл в котором находится массив объектов, где каждый объект состоит из трех полей - координат. Хочется получить ноду которая будет принимать на вход путь к такому json файлу а выдавать будет массив векторов с этими координатами...
No. 16714    
>>16712
Я думаю, что придётся делать в три ноды.
Первая нода считывает файл в строку - она уже у тебя есть.

Вторая нода будет принимать считанную из файла строку, парсить из неё JSON и преобразовывать данные оттуда в удобную тебе структуру например, сделаешь себе какой-то классик / структуру SphereDescriptor(x, y, z, r) или просто складывать в массив. Чтобы сделать такую ноду приспособь код из поста >>16679

Третья нода будет принимать уже этот массив координат / структур с кооридинатами, и создавать твои сферы на сцене.

Мне кажется лучше покомпонентно делать - проще будет разбираться с ощибками.
No. 16716    
>>16714
Ну 1 нода есть, да. 3 нода тоже есть ( я умею спавнить шарики в блюпринте), проблемы собственно со второй...
No. 16717    
>>16716
Что не получается? Кстати, по возможности описывай трудности сразу, так мне кажется мы быстрее всё сделаем
No. 16719    
Файл: 149955493664.jpg-(90.18KB, 1076×442, 3jO-DWTBxS0.jpg)
16719
>>16717
Что после комментария //objArray[i] — словарь,как с ним работать я пока не понимаю: как получать id, x, y, z, color из этого словаря?

Потом получается создаем еще один массив размера objArray.Num(), и вектора, куда будем помещать координаты, заполняем это все и возвращаем...
No. 16720    
>>16719
Тебе надо воспользоваться методами для получения полей по нужным типам, отсюда:
https://docs.unrealengine.com/latest/INT/API/Runtime/Json/Dom/FJsonObject/index.html

Например:
>double myXContainer = json->GetNumberField("x")
или
>json->TryGetNumberField("x", &myXContainer)

>int32 myIdContainer = json->GetIntegerField("id")
или
>json->TryGetIntegerField("x", &myIdContainer )

Проверять можно пользуясь методом json->hasField("x") и т.д.
No. 16725    
Файл: 149963324580.png-(19.05KB, 1078×177, 123.png)
16725
>>16720
Написал код, он вот тут: https://pastebin.com/uiGycwAf
Только вот выдает ошибки, не очень понятные (на счет отсутствующей скобочки например)
No. 16726    
>>16725
И где оно не видит скобки? Алсо, странно немного что ты весь функционал в одну ноду решил запихнуть.
No. 16729    
>>16726
В смысле в одну. Там же первая нода читает строку из файла, а вторая берет строку и возвращает массив векторов.
No. 16730    
>>16725
>>16729
Что-то я совсем не могу увидеть этот иллюзорный синтакс эррор в 26й строке в хэдере. Давай попробуем такой путь локализации проблемы - начинай закоменчивать функции по одной, одновременно в .h и .cpp до тех пор, пока оно не начнет собираться. Потом раскомментируй последнее, что закомментил и убедись, что собираться перестало. И тогда уже ты или сразу поймешь, в чем дело, или будем думу думать здесь.
No. 16731    
>>16730
Не работают две последние функции. Возможно, из за передачи массива по ссылке... Почему так и не разгадал.
No. 16732    
>>16731
>Возможно, из за передачи массива по ссылке...
Давай проверим и это. Временно исключи массив из списка параметров функции, и посмотри, что получится. Ну и конечно закомментируй там внутри всё что массив использует
No. 16733    
>>16732
Да там ничего не будет по сути, этот массив и возвращается тоже...
No. 16735    
>>16733
Просто хочется понять, проблема конкретно в том как массив объявлен в параметрах, или нет.

Т.е. оно соберется:
а) Если ты уберешь декларацию вообще
б) Если ты уберешь из декларации параметра массива символ указателя (но передавать туда по факту будешь указатель)
No. 16736    
>>16733
Как там у тебя, получилось?
No. 16739    
Да, все оказалось слишком просто. Имя массива ArrayVertexCoordinates являлось зарезервированным именем чего-то. Поменял его и все начало собираться.
No. 16740    
>>16736
Единственное что осталось - научится рисовать линии. Я умею рисовать лайн трейсы, но они выглядят очень примитивно, и у них плохо с перспективой.
No. 16742    
>>16740
>научится рисовать линии
Поясни, что ты имеешь в виду. Ты про линии раньше не упоминал вообще или я не внимательный
No. 16747    
>>16742
Не упоминал, все верно. Ну в любом случае задачка такая стоит и я ее решаю в данный момент. Было изначально 3 варианта: рисовать ЛайнТрейсы, рисовать что то типа кубика 1 х 1 х 1 растянутого по одной из осей и повернутого на определенный угол и parcticle beam. В итоге сейчас разбераюсь с последним, так как 1 не подходит по вышеупомянутой причине, второе не очень удобно из-за сложности поворота, а вот третье... Посмотрим.
No. 16748    
>>16747
А https://docs.unrealengine.com/latest/INT/BlueprintAPI/Rendering/Debug/DrawDebugArrow/index.html тебе не подойдет? Даже размер стрелки на конце можно указать.
No. 16751    
>>16748
Ну, наверное только как временное решение. Тут во первых время существования ограниченное, похоже, во вторых я не знаю, будет ли видно ее при окончательной сборке приложения.
No. 16755    
Пишу на питоне под линукс, снимаю звук с микрофона (http://python-sounddevice.readthedocs.io/en/0.3.8/examples.html), редактирую, как теперь заставить систему считать измененный звук входящим прямо с микрофона, чтобы все программы получали его уже после моей обработки?
No. 16763    
>>16755
Нашел такую либу:
https://github.com/carlthome/python-audio-effects

Пишут:
>There's also experimental streaming support. Try applying reverb to a microphone input and listening to the results live like this:

python -c "from pysndfx import AudioEffectsChain; AudioEffectsChain().reverb()(None, None)"


Очень может быть, что это то что ты хочешь. Попробуй.
No. 16765    
Файл: 150006082382.png-(156.37KB, 1279×427, rotate.png)
16765
>>16751
Все я же. Стив, в условиях моей задачи debug line(arrow etc) не подходят. Подходит только меш. Создал я себе значит цилиндр вытянутый так, чтоб был похож на линию, и начал пытаться его вращать в нужную мне сторону. Приведенный на пике blueprint level спавнит шарик и потом спавнит мой цилиндр который, как я думал, должен был повернуться в сторону шарика. Однако ничего подобного не происходит. Что я делаю не так?
No. 16768    
Файл: 150015556640.png-(73.79KB, 1247×306, Screenshot_1.png)
16768
>>16765
Стив, не дождавшись от тебя ответа я не сидел без дела и только что сам решил эту задачу. Схема blueprint выглядит так.
No. 16769    
Файл: 150020582852.png-(83.58KB, 671×365, 2017-07-16-070555_671x365_scrot.png)
16769
Охайо.
Начал изучать программирование с NodeJS.
Решил сделать что-то типа своей бордочки. Вот такие результаты:

http://212.8.234.129/
Там ссылка на исходнички.
Как тебе, чио? Кстати, тут есть кто умеет в JS?
No. 16770    
Файл: 150020647816.png-(2.90MB, 1920×1080, 0GbfB2t.png)
16770
>>16768
>Стив, не дождавшись от тебя ответа я не сидел без дела и только что сам решил эту задачу.
молодца!
No. 16771    
>>16769
>Кстати, тут есть кто умеет в JS?
Есть, по крайней мере в тред по новым скриптам для ычана пришло достаточно много людей и несколько версий кода.

>Как тебе, чио?
Само по себе - ничего (внешний вид сейчас понятное дело самый простой из возможных) Ты как-то хочешь этот проект развивать, или просто думаешь побаловаться какое-то время? Если хочешь развивать - тебе надо двигаться в сторону всяких защит от вайпов, спама, и утилит для администрирования борды. Если ты хочешь побаловаться с целью вникнуть в программирование, то следущий шаг для тебя - сделать чтобы вместо переменной DB использовалась настоящая база данных (пускай это будет та же mongodb, например)
No. 16772    
>>16769
Еще ты можешь совместить приятное с полезным, и напилить на базе NodeJS онлайн ханафуду тут >>6903 но лучше стучать в жаббер s30092007@jabber.ru
No. 16773    
Файл: 15002078412.jpg-(94.38KB, 423×755, scared.jpg)
16773
>>16771
Я вот читал, что с помощью Redis можно сделай удобный longpolling. Типа форум, да. С лонгполлингом, да. Чтобы дальше прокачиваться в вебе там, все дела.

Штука та ещё сыровата, но хоть что-то, что не стыдно вынести на показ и спросить.

Я вообще на верном пути, то бишь?
No. 16774    
>>16773
Ну, redis - достаточно скорострельный кэш. И он очень неплохо подходит для хранения данных у которых нет особо сложной структуры (а у постов в один тред она врядли есть), но это key-value хранилище, поэтому многое зависит от того, как ты сам отструктурируешь данные. Проблемы у тебя возникнут когда тебе понадобится хранить данные в более сложных структурах, и возникнет необходимость доставать какие-то их фрагменты.
алсо добавь обязательно security-layer и аутентификацию https://redis.io/topics/security

По поводу лонг-поллинга / вебсоков - не уверен, что форуму это прямо нужно, потому что на форумы, исключая самые популярные, обычно постит 3.5 человека в час, и люди редко прямо находятся на странице пока не получат ответ, но почему нет? Это хороший повод освоить технологию.
No. 16801    
Оцените по шкале от одного до десяти (0 ― на раз-два, 10 ― невероятно, лучше продать душу дьяволу) сложность и вероятность получить работу кодером без профильного образования и возрасте, превышающем двадцать семь лет.
No. 16802    
>>16801
Первое - я знаю таких людей. Так что это возможно, и я бы сказал даже более чем.

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

Вопрос в том, умеешь ли ты программировать, или нет. Это самый важный фактор. Будем считать, что умеешь.

Второй вопрос, как на твоё резюме будут смотреть HR. Тут будет знаменитый круг "нужен опыт, чтобы устроиться, но чтобы получить опыт, нужно устроиться". Это придётся обойти тем, чтобы устроиться на относительно низкую зарплату в любую местную контору, которая занимается IT только именно в IT-контору, а не в чей-то IT-отдел, проработать там хотя бы 6 месяцев, и с этим опытом уже начинать рассылать резюме по другим компаниям.
Обычно так люди свой старт в профессии и организовывают

Вердикт по шкале: 6 многое зависит от настойчивости и силы воли, т.к. придётся искать и пробовать, пробовать и искать, готовиться к собеседованиям, проходить их успешно, етц
No. 16803    
>>16802
Спасибо.
No. 16808    
>>15681
Почему нет треда про кресты?
No. 16809    
>>16808
Ну, вообще сишники здесь присутствовали, как минимум какое-то время, но отдельную нить решили не создавать.
No. 16811    
>>15697
>пик
Судя по цвету каски, просто рабочий.
No. 16812    
Нужно распарсить текстовый файл. Питон.
Имеются строки вида
Pin line_A_bottom_rx[0](n)    num AF16    type 1    width 1
, из которых нужно вытащить
line_A_bottom_rx[0](n)
и
AF16
. Теперь вопрос: как использовать захватывающие группы в питоне? То есть, строка скармливается регулярке и на выходе получается 2 строки. Как это делается?
Интересует не само регулярное выражение, а именно при помощи каких функций это реализуется в питоне (знаю только вариант с проверкой типа "соответствует/не соответствует регулярному выражению, но здесь нужно именно вытащить нужные строки в случае соответствия).
No. 16813    
>>16812
Всё, разобрался сам. findall выдаёт на выходе массив с содержимым захватывающих групп.
Вот никогда не подумал бы, что мне придётся изучать это дерьмо. Только нормального софта нет и получается быстрее освоить основы питона чем вручную вытаскивать данные из файла. Печально всё это.
No. 16814    
>>16813
> Только нормального софта нет
Под *nix для твоей задачи подошёл бы cut, под Windows для той же цели есть команда for.
No. 16815    
>>16813
>Только нормального софта нет
Если нужно просто распарсить текст с разделителями (а потом, видимо, сохранить его в каком-то другом формате), то тебе прекрасно поможет обычный табличный процессор. Excel, да-да. Все делается максимально наглядно и без написания кода.
No. 16816    
Хочу запилить полуавтоматическую считалку личного бюджета. Почему не воспользоваться готовым решением? Потому что могу. Кто-то уже делал подобное? Можете поделиться подводными камнями?

Поднял оракл, потому что PL/SQL мне всех родней и дистрибутивы под рукой. Сейчас имеются три таблички: баланс, расходы, доходы, обвешанные триггерами автоматизирующими списание средств с баланса и простенький пакет для работы с этими таблицами. Баланс держу как карта/наличка на дату, расходы/доходы как дата, сумма, тип (нал/безнал) и комментарий для аналитики.

В планах:
  • через недели две собрать аналитику по расходам, ввести типзацию вроде еда/проезд/бытовуха/вкусности
  • запилить прогноз баланса, основывающийся на среднем расходе в день за последний месяц, исключающий крупные покупки
  • очень отдаленный план: написать внешнее АПИ на каком-нибудь делфи, например

No. 16817    
>>16816
>Поднял оракл, потому что PL/SQL мне всех родней и дистрибутивы под рукой.
Представил себе SPARC Enterprise 4000 с соляркой и ODB и индус-триальный код на джаве.
No. 16818    
>>16816
>какие подводные камни
Первый - излишний перегруз логики приложения на базу данных часто именно так учат делать, но это не очень хорошо, потому что ты по факту женишься на своей базе данных, сложнее управлять кодом, сложнее апдейтить, етц В твоем случае, как я понял, ты вообще пилишь чуть ли не всё приложение на БД через процедурки и триггеры.

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

Третий - слишком формализованный ввод данных. Тут уже проблема с тем, что тебе все свои расходы надо самому же каждый раз и вбивать, ты не можешь просто отсканировать чек, и уж тем более тебе не придёт уведомление от платёжной системы. Это всё людям делать лень и быстро надоедает. Тут неплохо бы научить твою штуку хотя бы парсить и заносить в базу отчеты от платёжных систем / интернет-банка, которые ты бы мог для начала просто выгружать сам в нужное место, а твоя система их бы подхватывала. В принципе если система научится делать так, это частично компенсирует непортабельность Можно также нафантазировать, что у тебя прикручен SMS-банкинг к телефону, ты напишешь мобильный клиент, которого можно натравить на парсинг этих SMS от интернет банкинга, с занесением сначала в базу мобильного клиента, а потом с синхронизацией этого добра с основной при подключении к компутеру, например.

>API на Delphi
Расскажи хоть, что ты от этого апи хочешь. Потому что мне кажется, что устаревший делфи может быть не лучшим выбором нет, я не буду тебе жаву советовать, не переживай
No. 16819    
>>16818
> сложнее управлять кодом, сложнее апдейтить
Не совсем понял тебя, если честно. У меня неплохой опыт работы с разными серьезными и крупными биллнгами, так что не думаю, что возникнут особые проблемы с реализацией какой-либо логики на стороне БД, тем более что мне не надо учитывать бухгалтерские периоды или защищаться от обмана.

> Второй - непортабельность итогового решения.
Для меня не проблема от слова совсем, я не собираюсь продавать или даже шарить это с другими, тем более я хардкорный домосед и выбираюсь только на работу и в магазин уже несколько лет и не думаю прекращать. На телефоне у меня есть смски от банка со стоимостью, местом, временем и остатком. Все это бюджетирование я пилю в основном для прогноза и анализа, на мобилке мне такое не нужно.

> Третий - слишком формализованный ввод данных.
Тут я иду на компромисс, например, поход в магазин заношу просто как "Продукты", не заморачиваясь каждой покупкой в отдельности, а если учесть что я вообще редко ем дома, то следить за таким не особо сложно. Вообще была идея граббить csv с распечаткой транзакций с сайта банка и парсить их с занесением в БД, но потом я прикинул, что делаю одну-две покупки в день и понял, что оно того не стоит.

От апишки хочу просто внешний интерфейс ввода данных, чтобы вместо того, чтобы делать
exec bill.add_purchase(317.2,'Сласти к чаю',1);
просто вызвать визард.
No. 16820    
>>16819
Ок, я понял тебя, ты инженер БД, поэтому в первую очередь с ней и работаешь.

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

Ну а так, я тебе основные камни назвал, а уж индивидуальная применимость - то такое.
No. 16843    
>>16816
Репортинг ин. Наткнулся на подводный камень: транзакции в иностранной валюте, пришлось на калькуляторе(sic!) высчитывать дельту и заносить ее.
No. 16844    
>>16843
Сейчас понял насколько это было глупо, запилил процедуру для занесения дохода/расхода, основываясь на балансах переданных в нее. Вариант, конечно, костыльный, но пока пойдет; у меня операции с другими валютами это обычно ежемесячные более-менее крупные разовые переводы.
No. 17000    
Файл: 150254403059.gif-(494.76KB, 500×281, tumblr_lwj93mx72z1r2vcn2o1_r1_500.gif)
17000
Аноним провёл выездную помощь по совмещению ImageMagick, IIS и Вакабы в >>16891

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

Раздел медленный, так что пусть даты постов не пугают вас, аноним ждет ваших вопросов и кодерских находок.
No. 17037    
Файл: 150298646320.png-(21.96KB, 464×280, Merry_Go_Round_0057.png)
17037
Как выбирать язык?
Перекатываюсь с няшной.
No. 17038    
>>17037
В первую очередь по сфере применения. Что из этого ты хочешь пилить: http://410chan.org/dev/arch/res/14160.html#14354

Во вторую очередь - относительно того на чем ты пилил раньше. На чем ты пилил раньше?
No. 17040    
https://pastebin.com/3VB4m39K
На отправке сообщения с файлом кидает ошибку "Can't set headers after they are sent"
Вроде бы я разобрался, мол, ошибка в res.redirect('/section1');, который ставит хедер, поэтому если я что-то уже отправил, то новые поля уже нельзя добавлять. Но как тогда всё это чинить?
No. 17041    
>>17038
>В первую очередь по сфере применения.
Допустим, 1, 3, 7. Впрочем, интересно также писать игры для тамагочи.
Раз есть такой крутой список по сферам деятельности, почему нет списка по инструментам этих сфер?
>На чем ты пилил раньше?
На Си, около-embedded.
No. 17043    
>>17040
Насколько я могу судить по коду, суть проблемы у тебя в следующем:
  • Ты асинхронно заливаешь файл
  • Пока файл асинхронно заливается, ты идешь дальше по коду и отправляешь редирект
  • Когда файл залился, он хочет написать что-то в респонс, а респонс уже отправлен
Чтобы такого не происходило, тебе надо дождаться, чтобы файл загрузился, а потом уже по результатам писать хедеры и отправлять редирект. Обычно это делается через Promise: https://learn.javascript.ru/promise

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

Т.е. базово что-то типа
>postMyFile(req.files.sampleFile).then(result => //код который у тебя ниже отправки, reject => //код внутри обработчика ошибки отправки файла)

Еще можно взять готовую реализацию где уже есть поддержка отправки файлов: https://github.com/request/request-promise#post-like-html-forms-do
No. 17044    
>>17043
То есть нужно условие - если файл залился, то слать редирект?
No. 17045    
>>17041
>1
>Веб-приложения, back-end
Если не оглядываться на то, что ты писал раньше на Си, то бэкенд веб-приложений сейчас в основном пишется или на Python, или вообще на жаваскрипте, посредством соответствующей оснастки, например NodeJS.

В питоне порог вхождения считается очень низким, и скорее всего у тебя не будет проблем. Тем не менее, если ты хочешь что-то поближе к си и плюсам, с жесткой типизацией, или вообще со строгим ООП, то начинай с си-подобных Java пока еще популярный или С# по ощущениям, в последнее время не очень популярный Используя близкие к твоему языки ты поймешь суть написания back-end приложений, после чего сможешь перекатиться на другие, по желанию.

>3
>Десктоп приложения
Сейчас десктоп-приложения можно писать почти на чем угодно, но если ты хочешь писать их быстрыми и нативными, то тебе нужны Си и Си++, так что язык менять не надо. Но нужно выбрать фреймворки. Сейчас обычно используют кросс-платформенные фреймворки, типа:
Еще есть путь дзен, когда ты используешь системные апи под каждую целевую платформу:

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

>7
>Скрипты
Тут есть зависимость от целевой платформы. Но в целом, самые популярные языки для скриптов сейчас:
Вообще для скриптов сейчас используются многие языки с виртуальной машиной.

Надеюсь, смог немного прояснить ситуацию.
No. 17046    
>>17044
Базово да. Но учти, узнать залился файл или нет ты можешь только внутри коллбэка:
>function(err) { ... }
Про который ты совершенно не знаешь, когда он вызовется, потому что не знаешь когда там пройдет реквест. Это я всё к тому что обычным ифом где-то снаружи ты это не решишь
No. 17047    
Файл: 150314604132.png-(32.47KB, 1600×900, scr.png)
17047
Вопрос к гуру handlebars и bootstrap:
1) Как правильно записать в handlebars условие типа:
{{#if varName = true}}
Что-то выводит
{{/if}}
Пытался делать способом выше - не работает
2) Как в bootstrap сделать <blockquote></blockquote> на одной строке c <img>, а то они у меня на разных строках с картинкой оказываются
No. 17048    
>>17047
>Как в bootstrap сделать <blockquote></blockquote> на одной строке c <img>, а то они у меня на разных строках с картинкой оказываются

Наверное самым современным способом для тебя будет использовать флексбоксы: https://getbootstrap.com/docs/4.0/utilities/flex/ хотя вообще можно просто дать классы d-inline и тому и второму, и добавить класс align-top картинке чтобы текст выравнивался по центру Пример флексбоксов: https://jsfiddle.net/12scanue/
No. 17049    
>>17047
http://handlebarsjs.com/builtin_helpers.html
>{{#if author}}
> <h1>{{firstName}} {{lastName}}</h1>
>{{/if}}
У тебя вроде бы то же самое:
>{{#if varName = true}}
Но мне кажется, ты хотел поставить ==, а поставил одинарное =, из-за чего у тебя теперь в ифе присвоение вместо сравнения. Т.е. по идее тебе надо поправить сравнение, или убрать его вообще, и будет тебе счастье.
No. 17053    
ычан, чому мой линq запрос не работает?

Model.Gallery.OrderByDescending(x => x.Picture.Last().id).Take(3)


нужно отобразить 3 галереи, в которые последними добавлялись картинки

> Ошибка сервера в приложении '/'.
>
> LINQ to Entities does not recognize the method '_3dsGallery.DataLayer.DataBase.Picture Last[Picture](System.Collections.Generic.IEnumerable
1[_3dsGallery.DataLayer.DataBase.Picture])' method, and this method cannot be translated into a store expression.


> Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода. 

> Сведения об исключении: System.NotSupportedException: LINQ to Entities does not recognize the method '_3dsGallery.DataLayer.DataBase.Picture Last[Picture](System.Collections.Generic.IEnumerable
1[_3dsGallery.DataLayer.DataBase.Picture])' method, and this method cannot be translated into a store expression.
No. 17054    
>>17053
> Model.Gallery.OrderByDescending(x => x.Picture.Last().id).Take(3)
Ты не можешь сделать Last() к сущностям базы, когда ты УЖЕ идёшь по сущностям.

> x.Picture.Last().id
Всю эту штуку вынеси выше, чтоб она выполнилась до OrderByDescending
No. 17055    
>>17054
я не знаю как это сделать!
напиши мне пожалуйста пожалуйста пожалуйста
No. 17056    
>>17055
Окей, скажи конкретно, что ты хочешь сделать с этой бедно базой данных.
No. 17057    
>>17056
мне нужно получить 3 галереи, в которые последними добавлялись картинки
No. 17058    
>>17056
вместо даты добавления картинок я смотрю на айди
No. 17059    
>>17057
>>17058
> var galIds = Model.Picture.OrderByDescending(x => x.id).Select(x => x.Gallery.id).Distinct().Take(3).ToList();
Ну, вот, как-то так.
И вот ты получил 3 idшника галерей.

> .ToList();
И вот это важно. Это значит, что запрос выполнятся и у тебя в galIds будут только id галерей, а не запрос в процессе.
No. 17060    
>>17059
чет оно берет не то что я ожидаю

http://3dsgallery.azurewebsites.net/
здесь есть такое:
<div class="gallery-data row">

@{

var galIds = Model.Picture.OrderByDescending(x => x.id).Select(x => x.Gallery.id).Distinct().Take(gallery_count).ToList();

}

@foreach (var item in galIds)

{

Html.RenderAction("GetElement", "Gallery", new { id = item });

}

</div>


но я не вижу галерею с рисунками, котороя должна быть третьей
No. 17061    
>>17060
Сколько айтемов у тебя в galIds?
Какое значение gallery_count?

> Html.RenderAction("GetElement", "Gallery", new { id = item });
Что вот эта залупа делает?
No. 17062    
>>17061
> Сколько айтемов у тебя в galIds?
3
> Какое значение gallery_count?
3
> Что вот эта залупа делает?
просто выводит хтмл элемент 1 галереи переданного айди
No. 17064    
>>17062
Давай посмотрим, какие у тебя там айдишники галерей лежат:

<div>ITEMS: @galIds</div>
<div>
@foreach (var item in galIds)
{
<p>ITEM: @item</p>
}
</div>

Напиши, что оно выводит, и если там внутри действительно три айдишника галерей, скажи, есть ли они действительно в базе.
No. 17067    
>>17064
добавил
No. 17068    
>>17067
>ITEMS: System.Collections.Generic.List`1[System.Int16]
>ITEM: 1
>ITEM: 2
>ITEM: 10

Вот я захожу на страницу. Вижу этот список, и вижу три галереи вверху со ссылками:

><a href="/Gallery/1" class="col">...</a>
><a href="/Gallery/2" class="col">...</a>
><a href="/Gallery/10" class="col">...</a>

Т.е. айдишники соответствуют. Тайтлы галерей:
>Всiлякi фотки
>Обрані скріншоти
>Поïздка в Карпати

Это разве не то что тебе нужно? Ты не видишь какую-то из них в своём браузере?
No. 17069    
>>17068
я хочу отобразить галереи, которые последними обновлялись, т.е. добавлялись картинки.
я последнюю картинку добавил в галерею с рисунками, а ее нет вообще, а должна быть первой
No. 17070    
>>17069
Давай дебажить дальше.

Сделай
> Model.Picture.OrderByDescending(x => x.id);
Так мы получим id последних 10 картинок. Наверху, среди них есть тот id действительно последних картинок?

> Model.Picture.OrderByDescending(x => x.id).Select(x => x.Gallery.id)
Теперь посмотрим на список галерей. Там есть необходимые?

> Model.Picture.OrderByDescending(x => x.id).Select(x => x.Gallery.id).Distinct()
Distinct правильно отработал?
No. 17071    
>>17070
добавил. в дистинкте проблемы. это можно как-то исправить?
No. 17073    
>>17071
Нда. Дистинкт вернул тебе упорядоченный список и в этом проблема, я правильно понимаю?

>The DISTINCT operation in SQL doesn't guarantee order. Internally it performs a sort before determining if rows are identical.
Вот и наша проблема.

Тогда, делаем вот так:
Model.Picture.OrderByDescending(x => x.id).Select(x => x.Gallery.id).GroupBy(x => x).Select(x => x.Key);
No. 17074    
>>17073
думал, что это заработает, но нет все то же самое
есть еще идеи, или придется делать циклами-условиями?
No. 17075    
>>17074
На всякий случай, можешь показать новый дебаг-вывод?
No. 17076    
>>17074
Альетрнативно, есть простая идея, при условии что у тебя есть возможность править схему таблиц в БД. Можно добавить галерее колонку last_hit, где будет таймстамп обновления, и каждый раз когда ты добавляешь в галерею картинку - обновлять эту колонку на текущий таймстамп. Тогда твоя выборка упростится до чего-то типа:
>Model.Gallery.OrderByDescending(x => x.lastHit).Select(x => x.id).Take(3).ToList();
No. 17077    
>>17076
добавил. груп бай видимо делает то же, что и дистинкт
>>17076
хорошая идея, но у меня база данных на 32мб (8 уже потратил) и я пока страюсь экономить как только можно
No. 17078    
>>17076
я все таки сделал так:
> var galIds = Model.Picture.OrderByDescending(x => x.id).Select(x => x.Gallery.id).ToList();
> List<short> resId = new List<short>();
> foreach (var item in galIds)
> {
> if (!resId.Contains(item))
> {
> resId.Add(item);
> }
> if (resId.Count == gallery_count)
> {
> break;
> }
> }

спасибо что помог мне с этим Model.Picture.OrderByDescending(x => x.id).Select(x => x.Gallery.id).ToList();
No. 17079    
>>17078
Если ты решил всё же дергать все айди из базы, то можно обойтись без цикла:

>Model.Picture.OrderByDescending(x => x.id).Select(x => x.Gallery.id).ToList().Distinct();

После того как ты сделал ToList(), ты получишь обычный список, и его обслужит Distinct() из Linq, а не из Entity Framework. А он уже сохранит оригинальный порядок вхождения.
No. 17080    
>>17078
>>17077
Еще одна альтернатива без добавления колонки - делать вложенный запрос. Т.е. у тебя будет сортировка по результатам подзапроса, который будет для текущей галереи лезть в таблицу пикчерз, и брать айди последней картинки. Этот запрос будет выполняться для каждой галереи в коллекции.
No. 17081    
>>17079
>>17079
стив балмер, ты супер-пупер! это помогло:
>Model.Picture.OrderByDescending(x => x.id).Select(x => x.Gallery.id).ToList().Distinct();
я и не думал, что Distinct() ведет себя по разному. спасибо за помощь!

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

Алсо ты писал, что уже потратил 8 мб из места отведенного под базу. Ты там случайно не хранишь картинки прямо в базе данных, в блобе?
No. 17083    
Файл: 150326207160.png-(13.87KB, 875×429, 2017-08-20_23-39-23.png)
17083
>>17082
> это не годится в случаях, когда у тебя сотни тысяч картинок и столько же галерей.
да, спасибо за совет. но об этом сайте мало кто знает, да и добавлять всякое в базу можно только с 3ds, так что сомневаюсь что там будет много всего

> Ты там случайно не хранишь картинки прямо в базе данных, в блобе?
неа, я слышал, что так делать плохо. посмотри на мою диаграммку, что бы ты в ней улучшил?
No. 17085    
>>17083
Схема выглядит норм. Я вижу ты сделал отдельную таблицу для связи картинок и юзеров, но не стал делать так же для галерей.

Кроме колонки для последнего обновления и триггера для БД, который бы обновлял эту колонку сам по инсерту, я бы еще перенес хранение картинок в файловую систему, оставив базе данных хранить только ссылку на файл.
No. 17086    
>>17085
> вижу ты сделал отдельную таблицу для связи картинок и юзеров
каждый юзер может поставить сердечко картинке, это и оно (надо бы переименовать)

> хранение картинок в файловую систему, оставив базе данных хранить только ссылку на файл
угу, у меня именно так

а ты в веб дизайне разбираешься? можешь дать советов для моего сайта?
No. 17087    
>>17086
>можешь дать советов для моего сайта?
На сколько смогу. Какого плана советы тебя интересуют?
No. 17088    
>>17087
дизайн в общем, юзабилити, может лучше было бы что-то изменить, добавить и все такое.
просто он мне кажется вроде нормальным, а вроде и не очень, а хотелось бы, чтоб был очень

например, главная страница. она какая-то унылая, но я не могу понять, что изменить, понимаешь?
No. 17089    
>>17088
Цель, нам нужна цель.
Что твой сайт должен делать, что он представляет, для чего предназначен?
No. 17090    
>>17089
он предназначен для хранения картинок из nintendo 3ds. нужно, чтоб его было удобно просматривать на экране шириной 320px. но и с компьютера тоже. нужно чтоб все было как-бы удобным и максимально информативным и занимало не очень много места

типа, может есть какие-то дизайнерские фичи, который должен значть каждый?
No. 17091    
>>17089
вот например, внизу картинки отображается подпись и если она не помешается в одну строку, то нужно кликнуть по ней, чтоб отобразить весь текст. но это вообще не понятно, как бы юзеру можно намекнуть, мол этот коммент можно раскрыть
No. 17092    
>>17088
1. Немного шизофренично разделение контента.

  • У тебя каждая карточка галереи имеет заголовок отдельной линией, снизу линия с указанием на тип изображения в галереи - ни то, ни другое нафиг не нужно, ты просто неэффективно используешь место. Сделай блок цельным визуально, залей его фон цветом. Еще я бы не ставил количество картинок первым элементов в заголовке карточки галереи. Лучше прибей его к правой стороне относительно текста заголовка.
  • При этом одновременно у тебя кнопки View all разделов вынесены справа далеко (на десктопе) от заголовка раздела, теряется их связанность с этим разделом. Тут либо менять её расположение, либо оборачивать весь раздел в рамку, выделяя его структурно от общего фона.
  • Карточка каждой картинки тоже имеет проблемы. Куча лишних границ: у индикатора 2D/3D, у счетчика лайков. Общая граница карточки тоже плохо выглядит, когда отделяет просто белый фон карточки от белого фона страницы - слишком контрастно. Я бы добавил фон карточке и сделал цвет границе чуть-чуть темнее фона карточки. Счетчик лайков вообще ужасен: сердечко слишком маленькое, имеет отдельный фон и т.д. - суммарно выглядит как селект-меню выпадающее (ибо сердечко похоже на стрелочку вниз). Убери у индикатора 2D/3D и количества лайков фон и границы, сделай сердечко сильно больше.
Хотя тут конечно надо бы видеть как это все выглядит на самой 3DS. Можешь фоточек и скриншотов принести?
No. 17093    
Что касается стилизации, то если лень самому много времени тратить, то я бы посоветовал бы найти современную бутстрап тему. В большинстве случаев это намного лучше чем пытаться в дизайн во время кодинга, по крайней мере в первое время.
No. 17094    
Файл: 150327025723.png-(551.72KB, 1366×768, 2017-08-21_01-58-07.png)
17094
>>17092
спасибо за кучу крутых советов. завтра попробую по ним переделать, надеюсь ты мне поможешь.

3дс не отображает глификонки. только какой-то ограниченный набор символов (ascii вроде 100% работает).

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

>>17093
посмотрю
No. 17095    
>>17094
Ок, буду ждать.
No. 17096    
Что такого особенного в Хаскеле?
No. 17098    
>>17096
Ты про то, что у него репутация сложного для понимания языка, на почве которой он стал меметичным? Так сложилось в основном от того, что в Хаскелле одну и ту же тривиальную задачу (типа посчитать длину списка) можно решить кучей разных способов, пример: https://github.com/edahlgren/100-lengths-in-Haskell
Такая проблема есть у многих функциональных языков, что может сделать код написанный одним человеком трудным для понимания и обслуживания другим. Второй фактор - часто это первый функциональный язык о котором человек слышит, и у него на первый фактор накладывается второй: общее трудноватое въезжание в функциональщину.
No. 17099    
>>17092
такс, давай опробуем по порядку.

> У тебя каждая карточка галереи имеет заголовок отдельной линией, снизу линия с указанием на тип изображения в галереи - ни то, ни другое нафиг не нужно, ты просто неэффективно используешь место.
как можно их скомбинировать? я хочу чтоб юзер сразу видел, какие картинки лежат в галерее. мне, например, 2д на 3дс смотреть вообще не интересно, то есть это важно

> Сделай блок цельным визуально, залей его фон цветом
я раньше пытался так сделать, но как по мне выгляит не оч. а тебе как? (прикрепил)

> Еще я бы не ставил количество картинок первым элементов в заголовке карточки галереи. Лучше прибей его к правой стороне относительно текста заголовка.
я тоже сначала хотел справа это отображать, но когда юзер логинится там может появится плюсик, типа довабить картинку. сейчас попробую переделать, чтоб оно было все таки справа и посмотрим
No. 17100    
Файл: 150331360166.png-(603.20KB, 1366×702, 2017-07-28_19-06-23.png)
17100
>>17099
> (прикрепил)
No. 17101    
Файл: 150331564093.png-(152.51KB, 1176×263, 2017-08-21_14-34-53.png)
17101
>>17099
> сейчас попробую переделать
так лучше?
No. 17102    
Скажите, есть ли какие-нибудь задачники, чтобы научить(ся) алгоритмизации?
No. 17103    
Файл: 150333348872.png-(532.30KB, 1366×768, 2017-08-21_19-31-36.png)
17103
>>17092
> При этом одновременно у тебя кнопки View all разделов вынесены справа
я на сайтах только такое видел. как еще делают? если расположить прямо возле названия, то будет неровно и глупо
что если добавить бордер, чтоб подчеркнуть это все? (pic)

> оборачивать весь раздел в рамку
я пробовал, но получилось глупо. знаешь какие-нибудь примеры такого использования?
No. 17104    
Файл: 150333555798.png-(358.54KB, 1195×291, 2017-08-21_20-01-18.png)
17104
>>17092
> Убери у индикатора 2D/3D и количества лайков фон и границы, сделай сердечко сильно больше.
сделал. не слишком ли минималистично выглядит? (пик)

> Я бы добавил фон карточке и сделал цвет границе чуть-чуть темнее фона карточки
какие цвета бы взял?
No. 17105    
>>17102
Если ты хочешь туториал, то:
На Си: https://www.tutorialspoint.com/data_structures_algorithms/
На Питоне: http://interactivepython.org/runestone/static/pythonds/index.html
Еще на Питоне: http://fiftyexamples.readthedocs.io/en/latest/algorithms.html
Лекции MIT за 2005й, включая видео и задания: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/

Если ты хочешь упражнения, то:
На разных языках, онлайн, с подсказками и решением: http://interactivepython.org/runestone/static/pythonds/Introduction/ProgrammingExercises.html
На Си: http://web-ext.u-aizu.ac.jp/course/alg1/ex/uk/
На Питоне (из туториала): http://interactivepython.org/runestone/static/pythonds/Introduction/ProgrammingExercises.html

Если хочется прямо туториал с упражнениями:
https://www.khanacademy.org/computing/computer-science/algorithms
No. 17106    
>>17105
Спасибо.
А есть комплект упражнений для школьников?
No. 17107    
>>17105
Да, и разве
>На разных языках, онлайн, с подсказками и решением
и
>На Питоне (из туториала):
не указывают на одну и ту же ссылку?
No. 17108    
>>17105
>>17107
Сплоховал.
На разных языках, онлайн, с подсказками и решением:
https://leetcode.com/problemset/all/

>>17106
>А есть комплект упражнений для школьников?
Просто руку набить, типа такого? http://www.studfiles.ru/preview/5397800/
No. 17109    
>>17108
>Просто руку набить, типа такого?
То, что надо, большое спасибо
No. 17110    
>>17102>>17107
https://github.com/karan/Projects
Список классических задач.
No. 17113    
Файл: 150335577737.png-(70.09KB, 307×246, card-image.png)
17113
>сделал. не слишком ли минималистично выглядит? (пик)
Как по мне, это движение в верном направлении. Вот я немного в фотошопе еще правки внес по карточке. Т.е. основные изменения: вертикально выравниванием в нижнем отступе индикатор 2D/3D, QRcode и лайки — там возможно кривизна сейчас обусловлена тем что у картинки паддинг есть по всему периметру, что визуально искажает выравнивание элементов под картинкой. При этом также переносим элементы управления, которые у тебя выводятся адаптивно (редактировать, удалить), с картинки в тот же нижний отступ с тем чтобы лайки были прибиты к правой стороне, а все остальное — к левой. Все элементы слева пропорционально распредели чтобы между ними гармоничные отступы боковые были, возможно имеет смысл добавить отступ между кнопками удаления и редактирования — это и с точки зрения дизайна ничего так, и с точки зрения UX очень хорошо. И да, лайки еще увеличить надо.

>какие цвета бы взял?
Тут сложно судить, надо подбирать что-то что приятно выглядит в контексте цельного дизайна. В принципе, основная задача границы отделять визуально карточки от фона, не имея при этом слишком большого контраста, поэтому подобрав один цвет можешь просто яркость в ту или иную сторону на процентов 5-15 двигать и смотреть что получиться для другого цвета.
No. 17114    
Файл: 150335641398.png-(214.18KB, 283×456, gallery_block_alternate.png)
17114
>>17104
>>17113
А я (другой Аноним, нас тут много) предлагаю альтернативный вариант вёрстки блока картинки из галереи. Смотри пикрелейтед, там варианты с юзер контролами и без. Я переместил индикатор 2д / 3д в правый верхний угол, потому что так он быстрее считывается фон черный, прозрачность 75 процентов, а на освободившееся место переместил пользовательские инструменты управления. Также предлагаю добавить всей секции недавних картинок фон, как на пикрелейтеде rgb (242, 242, 242)
No. 17115    
Файл: 15033569532.png-(103.10KB, 408×446, view-all.png)
17115
>>17103
>я на сайтах только такое видел. как еще делают?
Да, это популярное решение, но такое чаще встречается там где нет такого большого разрыва между левой и правой сторонами (т.е. окно, секция или меню уже) или контент просто сильнее отделен от фона, делая принадлежность кнопки к конкретной секции более очевидной.

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

>что если добавить бордер, чтоб подчеркнуть это все? (pic)
Идея неплохая, но у тебя бордер у тебя немного в конфликт с логикой становиться, т.к. по сути отбивает название раздела от его содержимого, словно это к разными вещам относиться. Если бы я добавлял такие бордеры, то я бы добавлял бы его над заголовком, т.е. после каждой галереи, чтобы галереи между собой были отбиты и выделены. Это имеет смысл, если у тебя не будет общего бордера вокруг каждой галереи. И да, бордер, если таки делать, лучше ужать до 1 пикселя.

>я пробовал, но получилось глупо. знаешь какие-нибудь примеры такого использования?
Их на самом деле довольно много, особенно раньше такое дробление на секции-окна было популярно, сейчас это чуть отходит, но именно с точки зрения структурирования контента чтобы один не путался с другим это вполне себе неплохое решение. На счет того как это смотрится, тут просто надо сидеть подбирать отступы, цвета границ и фонов, чтобы оно: а) выполняло свою роль по выделению контента и б) при этом не слишком бросалось в глаза.
No. 17116    
Файл: 150335707768.png-(158.16KB, 1365×456, recent_updates_header_alternate.png)
17116
>>17101
>так лучше?
Другой аноним также предлагает вот такое решение проблемы хедеров недавно обновленных галерей. Мне кажется вот так оно выглядит как нужно.
No. 17117    
>>17100
На самом деле мне вполне себе нравится этот вариант где блоки залиты цветом, нейтральный цвет, не бьющий по глазам, чуть более темный бордер — то, что надо. Не уверен, что тебе нужен бордер между заголовком и телом блока, но в целом норм.
No. 17118    
Файл: 150335906830.png-(398.01KB, 1366×702, sections_alternative.png)
17118
>>17099
>>17100
>>17117
>я раньше пытался так сделать, но как по мне выгляит не оч. а тебе как? (прикрепил)

Другой аноним предлагает вам такую цветовую схему для полностью залитых галерей. А также разделить две секции цветами, как на пикрилейтеде.
No. 17119    
>>17104
>какие цвета бы взял?
Еще мне кажется, что можно попробовать позаимствовать цвета и их сочетания у самой Нинтендо: https://developer.nintendo.com/web/development/home
No. 17120    
>>17113
понравилась идея подвинуть все воспомогательные кнопочки-лейблы в левый угол, это можно будет попробовать. лайки попробую еще больше увеличить, надо бы еще цвет подобрать для лакнуто/не лайкнуто, или красный и серый хорошо смотрятся?

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

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

>>17116
да, мне тоже нравится

>>17117
хм, попробую вернуть тогда. посмотрим, как оно будет

>>17118
вау, мне нравится такая идея. сейчас сайт более цветастый, надеюсь, что все будет смотреться так же хорошо

>>17119
да, может получится хорошо, если использовать уместно

всем спасибо за ответы. буду завтра делать и поделюсь тем, что получится
No. 17121    
Файл: 15033647443.png-(358.51KB, 1366×768, 2017-08-22_04-10-53.png)
17121
>>17118
кстати, другой аноним, расскажи как растянуть этот нижний серый блок по ширине окна, если у меня весь контент находится... ну, посмотри на картинку, не знаю как сказать
No. 17123    
>>17121
Сейчас у тебя структура примерно такая:
<div class="navbar..."></div>

<div class="container...">
    ...content...
</div>

Собственно, границы сбоку тебе контейнер и делает.
Если темплейт ты делаешь сам, то самый простой способ сделать секцию, это самому разбить контент:
<div class="navbar..."></div>

<div class="my-section-white...">
    <div class="container...">
        ...top content...
    </div>
</div>
<div class="my-section-grey...">
    <div class="container...">
        ...bottom content...
    </div>
</div>

No. 17124    
>>17123
> <div class="my-section-white...">
>     <div class="container...">
>         ...top content...
>     </div>
> </div>
> <div class="my-section-grey...">
>     <div class="container...">
>         ...bottom content...
>     </div>
> </div>

ой, я так не хочу... у меня просто в
<div class="container...">

...content...

</div>

рендерятся все страницы. это типа шаблон.

разве нельзя в css нашаманить, чтоб так получилось (поигнорировать эти падинги-маргиы), не создавая таких вот внешних блоков?
No. 17125    
>>17124
А почему ты не можешь для этой страницы использовать другой шаблон?
http://getbootstrap.com/docs/4.0/examples/album/
Как видишь, сами ребята из бутстрапа делают точно так же как я предлагаю. Наверное можно прямо у них экзампл и взять

>разве нельзя в css нашаманить, чтоб так получилось (поигнорировать эти падинги-маргиы), не создавая таких вот внешних блоков?
Все паддинги-маргины вложенных элементов складываются с родительскими. Проигнорировать ты их можешь только костылями, сказав, например, что у тебя у секции позишн абсолют, лефт 0, райт 0. После этого ты увидишь, что секция прячет под собой контент который был ниже по странице. И будешь костылять что-то, что будет занимать место там где должна была быть секция. А это будет либо маржин с перерасчетом, либо дубликат секции с visibility:hidden
Я вообще не рекомендую так делать, но в обучающих целях можешь посмотреть, как оно будет.
No. 17126    
Файл: 150341968161.png-(51.49KB, 283×220, 2017-08-22_19-29-03.png)
17126
>>17118
я еще заметил, что ты предлагаешь как-бы растягивать картинки по ширине, точнее скрывать верхнюю и нижнюю часть... но это может стать проблемой, когда картинка портретного формата, разве нет? (типа как на картинке)
No. 17127    
Файл: 150342627812.png-(157.43KB, 289×455, portrait_image_1.png)
17127
>>17126
Если делать как я предлагаю, то будет как на пикрелейтеде сверху.

Еще можно сделать как на пикрелейтеде снизу, поворачивая портретные картинки на -90 градусов для превью да даже средствами сервера
No. 17128    
Файл: 150342722662.png-(459.94KB, 1366×768, 2017-08-22_21-28-49.png)
17128
>>17127
напомни пожалуйста, как сделать первый вариант? чтоб оно по-центру разместило картинку

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

я тут на 10 пикселей уменьшил блок под картинкой с инструментами. норм так или лучше вернуть как было?
No. 17129    
>>17128
>напомни пожалуйста, как сделать первый вариант? чтоб оно по-центру разместило картинку
Надо убрать тэг img и заменить на div. Этому диву поставить background-image с урлем на картинку придётся через аттрибут style засовывать а также background-size на cover и background-position на center это уже можно в классе перечислить

>подбери мне цвет хедера для голубой панельки
rgb(237, 247, 252)

Я просто беру основной цвет панельки и повышаю ей lightness на сколько-то пунктов, в данном случае до 230.

>я тут на 10 пикселей уменьшил блок под картинкой с инструментами. норм так или лучше вернуть как было?
Из-за того что вокруг кнопок мало место мне теперь кажется, что блок перегружен. Но тут уже дело вкуса.

>в целом как получилось
Надо еще немного пофиксать.

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

2. Еще надо бы в заголовках обновленных галерей поправить отступы у элементов, потому что сейчас они в разнобой как-то.

3. По-моему ты забыл сделать индикатор 2D / 3D в углу картинки он просто делается, я его прямо в веб-инспекторе тогда и набросал

4. Решил View All пока не трогать?

Алсо, покажи потом как это выглядит на 3дс оно там в двух экранах?
No. 17130    
>>17129
> background-image с урлем на картинку
ой, а можно сделать так, чтоб когда нажимал правой кнопкой по картинке, то отображались эти пункты, связанные с картинками (сохранить картинку, открыть в новой вкладке, найти и тп). а то я перестал использовать background-image именно из-за этого

> rgb(237, 247, 252)
спасибо
> повышаю ей lightness на сколько-то пунктов
это в фотошопе такое? а то я в нем не разбираюсь

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

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

> По-моему ты забыл сделать индикатор 2D / 3D
угу, я еще подумал отображать только 3д, а 2д нет, сама нинтенда так делает (когда открываешь 3д картинку справа сверху тоже написано "3д")

> Решил View All пока не трогать?
да, пока пускай так побудет

> покажи потом как это выглядит на 3дс
ага, думаю, завтра доделаю все (из-за смены шаблона придется еще во всех страничках добваить див), залью в сеть и покажу
No. 17131    
>>17130
>ой, а можно сделать так, чтоб когда нажимал правой кнопкой по картинке, то отображались эти пункты, связанные с картинками
Попробуй тогда оставить <img> и сделать как тут: https://codepen.io/ErwanHesry/pen/JcvCw

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

>> повышаю ей lightness на сколько-то пунктов
>это в фотошопе такое? а то я в нем не разбираюсь
Нет, это в модели HSL такое. Я к тому, что ты можешь эти цвета автоматически получать, если хочешь. А еще в пэйнте, там этот параметр цвета назван Яркость
No. 17133    
Файл: 150349434795.png-(328.15KB, 1366×768, 2017-08-23_16-11-18.png)
17133
>>17131
я тут решил для бади сделать этот темно-серый цвет, а все остальное делить на белые-серые секции. просто, если, например, какая-то галерея будет пустой, то под серым футером еще будет белое пространство.

как мне лучше сделать чтоб модненько-современненько было?
No. 17134    
Файл: 150349992498.png-(31.22KB, 1366×768, 2017-08-23_17-46-41.png)
17134
>>17131
>>17133
хотя, чет совсем не очень...
надеюсь на советы
No. 17135    
>>17133
В любые пустые места пихай анимедочек в пнг
No. 17136    
Файл: 150351572847.png-(807.36KB, 1920×1080, alt_footer.png)
17136
>>17133
>если, например, какая-то галерея будет пустой, то под серым футером еще будет белое пространство
Если я правильно понял про что ты, то это можно починить.

>я тут решил для бади сделать этот темно-серый цвет
Лучше сделай такой же серый, как у секции. Будет лучше.
No. 17137    
Файл: 150351576126.png-(16.10KB, 1920×1080, alt_login.png)
17137
>>17134
Лучше тут или белый верни и добавь вниз границу см. пикрелейтед, или выставь такой же серый.
No. 17138    
Файл: 150351685173.jpg-(706.38KB, 2592×1944, DSC_0008.jpg)
17138
>>17137
думаю, верну футеру белый бекграунд...
на твоем фул эйч ди скриншоте все выглядит так глупо. это вообще нормально, что страница логина занимает у тебя 1/4 всего места?

а что скажешь насчет идеи опускать футер в самый низ и держать его там?

вот фотка с 3дс. мне нравится. осталось только глификонки на картинки поменять
No. 17139    
>>17138
>на твоем фул эйч ди скриншоте все выглядит так глупо
А представь что будет на 4к. На самом деле когда форма логина такая маленькая, её обычно:
а) выселяют в попап
б) заворачивают в рамочку и помещают в геометрический центр страницы.

>это вообще нормально, что страница логина занимает у тебя 1/4 всего места?
Ну, если в блоке мало информации, никак ты его особо не увеличишь. См. решения выше.

>а что скажешь насчет идеи опускать футер в самый низ и держать его там?
Это вполне практикующееся решение, называется sticky footer. Попробуй.

Еще я вижу что надо иконки редактирования на маленькие картиночки переделать, чтобы они на 3дс отображались
No. 17140    
Файл: 150351864846.jpg-(448.09KB, 2592×1944, DSC_0007.jpg)
17140
>>17139
> а) выселяют в попап
на 3дс вряд ли прокатит (разве что сделать стационарным эксклюзивом)
> б) заворачивают в рамочку и помещают в геометрический центр страницы.
это можно попробовать

> называется sticky footer. Попробуй
хорошо

галереи на 3дс тоже нужно немного поправить
No. 17150    
Файл: 150383043590.png-(56.23KB, 410×429, Screenshot_2017-08-27_13-38-34.png)
17150
Изучаю OpenGL и пытаюсь натянуть текстуру на прямоугольник, но получаю вот такой результат.
main.go:https://pastebin.com/NjPFC43J
vertex.glsl:https://pastebin.com/qR5YCww1
fragment.glsl:https://pastebin.com/ah64XRid
текстура: http://s1.iconbird.com/ico/0512/BrushedMetalIcons/file1336803332.png
No. 17155    
>>17150
Осторожно предположу, что ты накосячил где-то между описанием массива верщин и буффером координат.

Давай проверим. По идее тебе достаточно поменять массивы таким образом:

g_vertices = []float32 {
    //x     //y   //z    //uvs //uvt
    -0.5f,  0.5f, 0.0f,  0.0f, 0.0f, //Top left
     0.5f,  0.5f, 0.0f,  1.0f, 0.0f, //Top right
     0.5f, -0.5f, 0.0f,  1.0f, 1.0f, //Bottom right
    -0.5f, -0.5f, 0.0f,  0.0f, 1.0f  //Bottom left
}



g_indeces = []uint32 {
    0, 1, 2, //top-left, top-right, bottom-right
    2, 3, 0  //bottom-right, bottom-left, top-left
}

Чтобы всё отобразилось корректно. Сообщай о результатах.
No. 17159    
Файл: 150385046838.png-(42.04KB, 410×429, Screenshot_2017-08-27_18-24-48.png)
17159
>>17155
Поменял но ожидаемого результата не получил :(
No. 17162    
>>17159
А обнови код в пасте, потому что на вид у тебя неправильно одна из вершин отрендерилась.
No. 17164    
>>17162
Ой, неверно заполнил индексы.
Исправил, теперь все выглядит также, как и в >>17150

Новая паста с main.go: https://pastebin.com/SvZXKzS6
No. 17165    
Файл: 15038557871.png-(52.71KB, 410×429, Screenshot_2017-08-27_20-34-00.png)
17165
>>17164
Получилось! Ошибка была в функции loadTexture.
bounds.Max возвращает координату последней точки +1. Поэтому нужно использовать < вместо <=. Получалось так, что в binImg уже была текстура 513x513 вместо 512x512. Через метод gl.TexImage2D указывался размер 512x512, отсюда и происходило такое искажение.
No. 17166    
>>17165
Отлично!

Очень хитрое искажение вышло, особенно из-за того что похоже на какую-то базовую ошибку маппинга текстур. Но хотя бы методом исключения добрались до настоящей ошибки
No. 17168    
Как на плюсах получить значение определенного октета из введенного ип адреса? Вменяемой регулярки сабстринга не нашел
No. 17169    
>>17168
А чем представлен введённый ип адрес?
Строкой? Это ипв4 или ипв6?
No. 17173    
>>17169
string ipv4, но, в принципе, можно и char[]
No. 17174    
>>17168
Можно искать позиции точек с помощью string::find, можно использовать std::sregex_token_iterator или std::sregex_iterator, можно istringstream и getline, для char[] можно применить strtok или sscanf.
No. 17175    
>>17168
>>17173
Как насчет такого решения?
https://stackoverflow.com/a/5328184
No. 17176    
>>17175
this is beautiful

std::string ip ="192.168.1.54";
std::stringstream s(ip);
int a,b,c,d; //to store the 4 ints
char ch; //to temporarily store the '.'
s >> a >> ch >> b >> ch >> c >> ch >> d;
std::cout << a << " " << b << " " << c << " "<< d;
No. 17184    
Файл: 150411217297.png-(635.80KB, 1280×738, vlcsnap-2017-08-30-11h23m56s220.png)
17184
Поясните за haskell
>Списки могут содержать другие списки.
Экспериментерую посредством ghci.
[1, 1]
гуд
[[1, 1], [2,2]]
гуд
[1, [1, 1]]
не гуд.
Ошибка:
><interactive>:47:1: error:
> • Non type-variable argument in the constraint: Num [t]
> (Use FlexibleContexts to permit this)
> • When checking the inferred type
> it :: forall t. (Num [t], Num t) => [[t]
Как так? Что за проблемма с определением типа?

Проверяю так
let a = [[1, 1], [2,2]]
let b = [1, 2]
let c = [[3, 3], [4,4]]
let d = [3, 4]

c ++ a
считает верно
[[3,3],[4,4],[1,1],[2,2]]

пробую c ++ b
Та же самя ошибка
> <interactive>:7:1: error:
> • Non type-variable argument in the constraint: Num [t]
> (Use FlexibleContexts to permit this)
> • When checking the inferred type
> it :: forall t. (Num [t], Num t) => [[t]]
Видимо ghci хочет что бы если список состоит из списков, то складывать с ним он может только список состоящий из таких же списков.
Создасть список из списков и числов не позволительная роскошь.
Или таки позволительная, а ghci пиздит, и такой список надо просто объявлять по особенному?
No. 17191    
Стив, посоветуй годных книжек и статей по разработке сетевых и многопоточных приложений с использованием POSIX API на крестах. Желательно, чтобы там был описан ввод/вывод, сетевое и межпроцессное взаимодействие, синхронизация и использование разделяемой памяти. Мне нужно максимально быстро освоить это, чтобы получить работу.
С ходу сам нагуглил серию UNIX Network Programming от W. Richard Stevens, но последняя книга была издана в 2003 году. Актуальна ли до сих пор эта серия?
No. 17192    
Файл: 150426704352.png-(116.62KB, 814×785, haskell-govno.png)
17192
Когда умеешь заставить зависнуть даже haskell, хотя казалось бы если в произведении присутствует число 0, то он следуя ленивым вычислениям долженy выдавать 0
No. 17195    
Файл: 150429415314.jpg-(610.20KB, 1024×1266, bigcover3e.jpg)
17195
>>17191
>в 2003м
А не в 2013м? Третее издание вроде как раз май 2013: https://github.com/shihyu/Linux_Programming/blob/master/books/Advanced.Programming.in.the.UNIX.Environment.3rd.Edition.0321637739.pdf
No. 17198    
Файл: 150431166134.jpg-(776.91KB, 1787×1281, ffdc103f217db95ff1f4ff34adb95dad2dcecf9f.jpg)
17198
Ночи вам.
Помимо того, что уже порядка нескольких лет занимаюсь CG, решил также изучить для своих целей (геймдев) некоторый ЯП. Захотелось большей универсальности.
Полистав материал по теме на просторах сети, выяснил, что в наиболее крупных проектах (играх трипл-эй класса) зачастую использовался C++. Однако же далеко не всегда его советовали изучать человеку, знакомому с программированием максимум на уровне хеллоуворлда. Мол, сложно и всё такое (не лезь - сожрёт).
Так вот.
С чего стоит начать свой (я полагаю, очень долгий) путь? Что стоит освоить перед тем, как смело окунаться в изучение крестов?
No. 17201    
>>17191
http://man7.org/tlpi/
На кресты перевести труда не составит.

>>17198
Учи Си по КиР (например), потом читай Страуструпа. Если что-то вдруг не ясно, то обращаешься к какому-нибудь http://cppreference.com .
No. 17203    
>>17198
Если ты хочешь заниматься геймдевом, то я бы сказал, что перед выбором технических средств надо заниматься прежде всего гейм-дизайном, если ты конечно хочешь игры создавать. Если ты хочешь просто устроиться в геймдев контору, то тут пока ответ прост - разбирайся с движком юнити и посылай резюме по этим вакансиям А потом уже по дизайну подбирай технические средства, потому что нет смысла писать условный флэппи бёрд для телефонов на с++
No. 17204    
Файл: 150437961394.png-(168.19KB, 590×217, 2017-09-02_22-05-45.png)
17204
стив балмер, у меня есть вопрос по моему сайту http://3dsgallery.azurewebsites.net/

я хочу, чтоб если подпись под картинкой не влазила в 1 строку, то вместо трех точек отображался символ типа стрелочки вверх. вопрос: как мне узнать, влезает подпись в одну строку или не влезает?
No. 17205    
>>17204
или лучше подскажите как еще можно намекнуть юзеру, что после клика на не влезающую подпись она раскроется
No. 17206    
можно ли узнать размер в байтах System.Drawing.Image, не прибегая к сохранению картинки в виде файла?
в гуглах все берут размер исключительно из файла
No. 17208    
>>17206
Ты чувак с 3dsgalleries, который хранит картинки в базе? Спроси размер у базы же.

select datalength(field) from table where PK = Expression

https://www.sitepoint.com/community/t/getting-size-of-blob-in-mssql/1912/3
Если у тебя MSSQL, а на азуре у тебя по идее он
No. 17209    
>>17208
да, это я, но я храню картинки в файловой системе, а не в базе.
я просто хочу создавать превьюшки для фоток только в том случае, если превьюшка весит не больше оригинала (она бывает весит 100кб тогда как оригинал всего 10)
No. 17210    
Файл: 150439195161.png-(188.66KB, 590×217, 3dsgalleries_visual_hint.png)
17210
>>17204
>как мне узнать, влезает подпись в одну строку или не влезает
https://stackoverflow.com/questions/143815/determine-if-an-html-elements-content-overflows
https://stackoverflow.com/a/6406886

>>17205
>как еще можно намекнуть юзеру, что после клика на не влезающую подпись она раскроется
Что скажешь насчет такой визуальной подсказке как на пикрелейтеде?
No. 17211    
>>17210
вроде выглядит здорово, но все это в совокупности занимает многовато места. хотелось бы чтоб превьюшку перекрывало как можно меньше элементов. может есть еще идеи

(хотя я, наверно, так и сделаю, как у тебя, только подвину правее, чтоб было на значок 3д похоже)
No. 17212    
>но я храню картинки в файловой системе, а не в базе.
Ты хочешь генерить превью при загрузке картинки в галерею? Если да, то у тебя есть такие варианты:
1. Возьми размер массива байт который пришел с формы загрузки (и из которого ты объект Image создаешь)
2. Ты всё равно сохраняешь картинку в файл. Что мешает потом спросить размер файла, который ты только что создал?
No. 17213    
>>17212
> Ты хочешь генерить превью при загрузке картинки в галерею?
угу, я так делаю

> 1. Возьми размер массива байт который пришел с формы загрузки (и из которого ты объект Image создаешь)
у меня есть этот размер...

> 2. Ты всё равно сохраняешь картинку в файл. Что мешает потом спросить размер файла, который ты только что создал?
прикол в том, что я хочу сохранить превью только в том случае, если она занимает места не больше чем оригинал.
бывает, оказывается, что созданное превью занимает в 10 раз больше места, чем оригинал (тогда-то и в превью смысла нет, лучше на сайте оригинал отображать сразу)

вот кусок кода
            Image preview = PictureTools.MakeThumbnail(img_for_thumb, 155, 97);

            if (originalLength > 50)
            {
                preview.Save($"{path}/{picture.id}-thumb_sm.JPG");
            }


вместо 50 в ифе я хотел бы сравнивать что-то типа preview.lengthInKilobytes
No. 17214    
Файл: 15043935428.png-(144.05KB, 590×217, 3dsgalleries_visual_hint_2.png)
17214
>>17211
Вот тебе пикрелейтед альтернативный вариант визуальной подсказки.
No. 17215    
>>17214
вау, я в восторге. спасибо!!
No. 17216    
>>17213
Можешь спросить в байтах через такой воркэраунд. Вот таким вот образом получи от своей превьюхи массив байт: https://stackoverflow.com/a/16958128
Ну и спроси у него длину.
No. 17217    
>>17216
похоже это что мне нужно. спасибо!
No. 17228    
Файл: 150463697261.png-(166.86KB, 576×216, 2017-09-05_21-31-35.png)
17228
>>17214
я рещил сделать справа, чтоб жмакать на кнопку было удобнее, но когда подпись скрыта - кнопка не жмакается! ее, видимо, текст перекрывает!

помогите как исправить
No. 17229    
>>17228
и еще как паддинги слева и справа сделать у текста, не затрагивая эту кнопку?
No. 17230    
>>17228
где-то час просидел, пытаясь что-то с этим сделать, но ничего не смог. кошмар
No. 17231    
>>17228
>>17229
>>17230
По селектору
>.img-comment .show-hide-comment
Добавь свойство
>position: relative;
По крайней мере если сделать это в веб-инспекторе, то это полностью решает твою пробелму.
No. 17232    
>>17231
> .img-comment .show-hide-comment
ты мой спаситель, спасибо! я то думал, что это свойство только для того чтоб absolute элементы отображать

а почему оно так вообще взяло и все исправило? что оно сделало?
No. 17233    
>>17231
кстати, вот если паддинги делать, то троеточее скрывается за кнопкой. это исправляется?
No. 17234    
>>17232
>>17233
На самом деле это грязный хак. Позишн выдернул твои кнопки на отдельный слой, а рилейтив оставил кнопку там где она была изначально. Поэтому кнопка теперь поверх спана, поэтому же под ней могут скрываться элементы.

Насчет паддингов не понял, поясни.
No. 17235    
Файл: 150470330141.png-(87.76KB, 281×218, 2017-09-06_15-59-47.png)
17235
>>17234
возможно ли сделать паддинги у самого текста, при этом не двигая кнопку?
No. 17236    
>>17234
>>17235
о, я уже сам понял. можно на кнопке минусовой маргин сделать! я боялся что браузер 3дс это не поддерживает, но он вроде норм
No. 17237    
Файл: 150481087398.png-(538.23KB, 1366×768, 2017-09-07_21-50-52.png)
17237
пришло время переделать страницу профиля пользователя. это может быть страница не только залогиненого, а вообще любого юзера.
хочется, чтоб эта страница выглядела как страница профиля и была по-своему уникальна. отображать хочу галереи, картинки и картинки, которым юзер поставил сердечко

буду потихоньку делать, как знаю, но если кто-то знает хорошие шаблоны для странички профиля или у кого есть идеи - отпишитесь пожалуйста
No. 17238    
>>17237
>отображать хочу галереи, картинки и картинки, которым юзер поставил сердечко
Как насчет того, чтобы сделать из этого вкладки, т.е. tabs? https://getbootstrap.com/docs/4.0/components/navs/#tabs
No. 17240    
Файл: 150491113536.png-(16.58KB, 833×524, 3dsgalleryprofile.png)
17240
>>17238
думал об этом, может так и стоит сделать. но я пока представлял, что страница профиля будет как-бы витриной

вообще, я решил поиграть в дизайнера и в пейнте набросал такое, зацени
No. 17244    
Как начать разрабатывать для себя?
No. 17245    
>>17244
разрабатывай вещи, которые тебе интересны или могут принести пользу-удобство в чем-то. попробуй воспринимать процесс разработки как хобби
No. 17246    
>>17240
Т.е. ты по типу ютуба хочешь, показывать самые популярные галереи, последне картинки, и лайкнутые картинки? Ну из возможных проблем я вижу:
1. Пустотарий в блоке популярных галерей, если галерей мало
2. Красиво разделить блок лайков от блока картинок в фактическом дизайне может оказаться сложно
3. Пустотарий в блоке галерей и картинок, на фоне забитых лайков, если юзер завел аккаунт только чтобы лайкать и собирать чужие картинки на пиксиве например таких полно

Из этого можно сделать выводы:

Если у юзера одна или меньше галерей - не показывать бэст геллериз. Если у юзера нет картинок - не показывать блок с картинками и разрешить лайкам заполонить всё. Но что если юзер налайкал 1000 картинок, а потом соизволил закачать одну свою? Опять пустотарий.
Можно сравнивать количество картинок и количество лайков, и в зависимости от соотношения выставлять максимальную ширину по гриду этим блокам.
No. 17247    
>>17246
ты приоткрыл мне глаза, я даже не думал о подобном...

думаю, пока что я сделаю что-то попроще, с табами, например, а дальше буду смотреть что и как

кстати, где можно бы разметить кнопки добавить галерею/картинку?
я пока думал прямо в профиле и в соответствующих разделах их показывать где-то
No. 17248    
>>17247
Тут трудно говорить без фактического дизайна на руках, где будет лучше. Может так, как ты говоришь, а может в хедере, а может лучше вообще сделать стики панель на которой кнопки всегда будут доступны, или даже предусмотерть драг-н-дроп (для 3дс наверное неактуально)
No. 17250    
>>17248
я еще думал про иконки, которые отображают количество контента в профиле. для лайкнутых - сердечко, для изображений - иконка фото, а вот за галерею что можно взять? я даже не могу представить, как галерею можно изобразить в виде иконки

может, есть идеи у кого?
No. 17251    
>>17250
Несколько фото наложенных друг на друга с нахлестом, несколько фото сеткой, альбом, папка, буква G, куча вариантов же.
No. 17252    
Файл: 150507064680.png-(1.26KB, 20×22, glyphicons-479-blackboard.png)
17252
>>17251
а как насчет такого? в бутстрапе нашел такое. лично мне кажется норм
No. 17257    
>>17252
Тут главное чтобы пользователь понимал, что это наверное галерея, а не чтобы можно было как-то это понимание на иконку натянуть. Мне кажется эта не подходит.
No. 17259    
>>17257
черт, просто определить что-то сложно
> Несколько фото наложенных друг на друга с нахлестом
будет очень похоже на иконку количества картинок
> несколько фото сеткой
я приятно удивлюсь, если такое удастся разместить на картинке размером 15х15 пикселей
> альбом
галерея - это что-то большое, величественное, красивое, а альбом - слишком попсово. не хочу альбомы, хочу галереи
> папка
ну, это можно, но хочется чего-то получше
> буква
не надо

чувствую себя какой-то принцесской-истеричкой, лол, не обращайте внимания кароче
No. 17260    
>>17245
Никак не могу себя заставить начать. Даже просто определиться с тем, что хочу.
No. 17262    
>>17260
Смотрел ли ты ссылки в нашей базе знаний? Там есть возможные сферы применения сил: http://pastebin.com/AGhLZppH
No. 17263    
>>17262
Хорошая база!
No. 17264    
Файл: 150517864086.png-(849.66KB, 1366×768, 2017-09-12_03-45-28.png)
17264
страница пользователя выглядит как-то суховато... есть у кого идеи, что можно изменить/добавить?

еше на этой странице перестал отрабатывать скрипт, который вставлял кнопку раскрытия длинной подписи
$(".img-comment").each(function(i,e){

if ($(e)[0].scrollWidth > $(e).innerWidth()) {

$(e).prepend($('<span class="show-hide-comment pull-right">▲</span>'));

}

})

наверно, потому, что эти картинки все скрыты сначала
No. 17265    
>>17264
> перестал отрабатывать скрипт
еще пытался вызывать его по клику на таб, но все равно не отрабатывает из-за анимации. как можно поправить? не таймаут же использовать
No. 17266    
>>17264
>>17265
1. Не стоит делать так, как ты делаешь сейчас т.е. препендить кнопку яваскриптом - кнопка там должна быть всегда, просто спрятанная по-умолчанию. А жаваскрипт её как раз должен показывать.

2. >еще пытался вызывать его по клику на таб
>картинки все скрыты сначала
Картинки вообще в DOM-модели присутствуют, или нажимая на таб они аяксом грузятся?
No. 17267    
>>17264
>>17265
Если ты табы подключил прямо через их плагин, то тебе надо цепляться не на клик, а на их ивенты: https://getbootstrap.com/docs/4.0/components/navs/#events
No. 17270    
>>17266
> Не стоит делать так, как ты делаешь сейчас
чому это? а как же экономия места? для браузера 3дсочки это важно
к тому же это не поможет с проблемой со скриптом
> Картинки вообще в DOM-модели присутствуют, или нажимая на таб они аяксом грузятся?
присутствуют. прикол в том, что они скрыты и эти свойства в ифе $(e)[0].scrollWidth > $(e).innerWidth() равны 0. вон вроде стив балмер ниже >>17267 принес решение. попробую просто добавлять кнопки при первом переходе на таб картинок
No. 17273    
> Пополняемая база знаний: http://pastebin.com/AGhLZppH
> >>Я не знаю, чем указатель отличается от ссылки
> http://410chan.org/dev/arch/res/14160.html#14585
> вектор не уничтожится, пока все ссылки не уничтожатся
> Объект сам удалится, когда удалятся все ссылки.
Это не так. Объект, созданный в стеке, сам удалится, когда закроется его область видимости. Существование ссылок на него не влияет на его время жизни. Например, внутри функции создаётся объект, функция возвращает ссылку на него, затем пытаемся прочитать результат. https://ideone.com/HMW706 Ошибка выполнения, по ссылке уже разрушенный объект.
Существуют умные указатели, у них есть понятие подсчёта ссылок. Возможно, с этим перепутали, но это совсем другое. Это количество копий умного указателя, и когда оно достигает нуля, содержимое уничтожается.
No. 17287    
>>17273
Дополнил базу. Спасибо.
No. 17301    
Файл: 150551686528.png-(55.67KB, 384×222, 2017-09-16_01-58-24.png)
17301
с возможностью просматривать профиль хорошо было бы указывать авторство. в голову пришла только идея разместить автора сразу под названием, но так будет сложнее кликать на автора или на галерею.
наверно, было бы хорошо разметить автора в нижней панельке, но я не знаю, как это лучше сделать.
есть у кого идеи?
No. 17305    
Файл: 150565230199.png-(60.91KB, 384×222, gallery_edit_proposal.png)
17305
Почему бы не сделать кнопкой весь нижний блок как на пикрелейтеде?
No. 17306    
>>17305
мне нравится! попробую
спасибо

правда, если название галереи не будет влазить по ширине, то где тогда разместить этот индикатор 3д/2д? если он скроется вместе с длинным названием, то будет не очень.
есть идеи? может слева от названия его поместить?
No. 17310    
>>17306
>если он скроется вместе с длинным названием, то будет не очень. есть идеи?
Можно зарезервировать для него отдельное место. Т.е. сокращение заголовка отдельно, а тип галереи рядом.

>может слева от названия его поместить?
Можно попробовать, но тогда, мне кажется надо оформить по-другому. Еще можно его оформить так же как счетчик картинок и поместить там же рядом.
No. 17313    
>>17310
попробую оба варианта, спасибо!

кстати, сегодня столкнулся с проблемой одной... после логина на сайт идет перенаправление на страницу пользователя вида {website}/user/{login}. так вот, сестра попыталась войти в свой аккаунт со своего андроид телефона (браузер хром), авторизация прошла успешно, но ее переправили на страницу, добавив в конце '%20' {website}/user/{login}%20 из-за чего была ошибка 404.
я заходил в ее аккаунт с браузера и со своего телефона, в котором более старая версия андроида и этой проблемы не было вообще...

может, кто-то из вас здесь сталкивался с этим или слышал? мб это проблема того браузера или же нужно искать ошибку в коде?..
No. 17314    
>>17313
> я заходил в ее аккаунт с браузера
c браузера ноутбука (виндовс, хром)

о, и еще ее логин на кириллице, если это важно
No. 17315    
>>17313
>>17314
%20 - это код пробела. У тебя логин очевидно проходит urlencoding, учитывая что он на кириллице, там наверняка вообще вся часть урли с логином в этих кодах. Вопрос только в том, откуда взялся пробел в конце, в частности, добавил ли его браузер (клиент), или твой код (сервер). Дальше по обстоятельствам - поправить у себя если виноват сервер, или, если виноват клиент, выяснить версию хрома на телефоне и сравнить с реакцией более новых версий хрома. Если в версиях хрома поновее проблемы нет, то обнови сестре хром и забудь, а если проблема воспроизводится, то чини.
No. 17316    
>>17315
> там наверняка вообще вся часть урли с логином в этих кодах
вообще-то нет. на ноутубке и на ее телефоне кириллица отображается прямо в урл
> выяснить версию хрома на телефоне и сравнить с реакцией более новых версий
попробую обновить ее браузер. надеюсь, что все исправится, потому что я понятия не имею, откуда там берется пробел, если на других устройствах (браузерах) все ок
No. 17317    
Файл: 15057795507.png-(86.77KB, 307×411, 2017-09-19_02-57-27.png)
17317
>>17310
> оформить так же как счетчик картинок и поместить там же рядом
на 3дс и телефонах значок 2d&3d занимает слишком много места. кхм, может, это можно назвать как-то покороче?
No. 17318    
>>17310
>>17317
мхх, наверно, я буду отображать только значок 3д, если в галерее есть хотя бы 1 3д картинка если других идей ни у кого не найдется
No. 17319    
>>17316
>вообще-то нет. на ноутубке и на ее телефоне кириллица отображается прямо в урл
То что она красиво отображается в адресной строке не значит что она такая на самом деле. Ради примера, скопируй ссылку с кириллицей в самый-самый простой текстовый редактор, там вся кириллица превратится в url-коды если только специально не заложено иначе Есди код пробела явно видно при остальной закодированной кириллице, то это указывает на то что пробел был закодирован дважды такая ситуация на самом деле часто случается

>>17317
>>17318
1. Уменьши паддинги слева и справа для этого значка
2. Поменяй 2D&3D на 2+3D
3. Дай больше места области где находится этот значок
No. 17321    
Файл: 150582541719.png-(175.27KB, 1169×214, 2017-09-19_15-37-33.png)
17321
>>17319
спасибо за советы, но я все же пойду этим путем:
>>17318
> я буду отображать только значок 3д, если в галерее есть хотя бы 1 3д картинка

просто особого смысла писать, что в галерее есть 2д картинки нет. на не-3дс устройствах даже 3д картинки .mpo открываются как .jpeg в браузере и отображаются нормально, воть.
к тому же, если юзер лазит с 3дсочки и хочет увидеть только 3д картинки, то он может отсортировать галерею по 3д
No. 17339    
Файл: 150612917855.png-(25.78KB, 894×165, 2017-09-23_04-01-10.png)
17339
я могу залогиниться, если напишу свой логин правильно и пароль и в конце поставлю хоть десять пробелов. но в базе у логина нету пробелов и из-за этого выползают баги
еще здесь об этом писал >>17313

на скриншоте попытался показать, в чем проблема. может, я не правильно понял, что значит метод any?
помогите пожалуйста я ничего не понимаю
No. 17340    
>>17339
ох, лол. только что успешно залогинился в твиттер, поставив в конце логина пару пробелов. это что, нормально?
если да, то мне в общем то достаточно в
FormsAuthentication.RedirectFromLoginPage(model.Login, true);

вместо
model.Login
написать
user.Login
и баги пропадут
No. 17342    
>>17340
>поставив в конце логина пару пробелов. это что, нормально?
Твиттер, как и многие другие сервисы делают санитацию данных полученных с форм. Один из базовых этапов санитации - тримминг, когда у строки убирают все начальные и конечные пробелы.

Тебе просто тоже надо делать тримминг:
https://goo.gl/FzsQNU

>>17339
Скорее всего движок базы данных где-то внутри делает тримминг за тебя, и поэтому твои условия срабатывают.
No. 17349    
>>17342
понятно. спасибо за ответ
No. 17354    
Как в сводной таблице закрасить ячейки по условию? Нужно чтобы было только 3 дискретных цвета: зеленый (значение меньше 80), желтый (значение между 80 и 90), и красный (значение больше 90).
Пробовал использовать цветовую шкалу, но там градиент строит, а мне только 3 цвета надо. И я так и не понял как там правило форматирования задавать.
И еще проблема в том, что использую меру из модели данных из Power Pivot. И цветовая шкала как раз поддерживает форматирование по мере, вот только закрашивает не правильно. Может нужно выражения DAX какие-то использовать?
No. 17355    
>>17354
А все разобрался. Нужно применить условное форматирование к любой ячейке и задать правила: больше, меньше, между. И затем рядом с ячейкой всплывающее меню щелкнуть на "применить ко всей мере".
No. 17358    
Файл: 150653001581.png-(793.47KB, 1366×768, 2017-09-27_19-26-47.png)
17358
где бы разместить анимашку загрузки, когда аджаксом подгружаешь следующую страничку или фильтр меняешь?
и надо бы чтоб и на мобилках и на пк выглядело ок
No. 17360    
>>17358
Когда ты клацаешь на пагинатор, у тебя автоматом страница скроллится вверх, и в поле зрения попадает заголовок, в данном случае "Images". Я бы разместил лоадер просто справа от этой надписи.
No. 17361    
>>17360
мне нравится, так и сделаю. спасибо
No. 17385    
Что-то я торможу. Как в перле при работе с произвольным файлом добиться того же эффекта, что и при использовании опции -i в командной строке?

Т.е., к примеру, если я пишу
script.pl -i foo.txt
, а в скрипте у меня
print "TEST $_" while <>
, то к каждой строке файла foo.txt в начале прибавится TEST. А вот если я открываю файл foo.txt изнутри скрипта — скажем, как
open(my $foo, '+<', "foo.txt")
, то попытка написать что-то вроде
print $foo "TEST $_" while <$foo>
даёт на выходе кашу.

Можно ли как-то добиться, чтобы второй вариант работал, как первый? Нет, я понимаю, можно скопировать содержимое файла в массив, пробежаться по нему, потом переписать его поверх файла. Но это долго, скучно и требует много лишних телодвижений. Наверняка ведь есть более вменяемые способы…
No. 17386    
>>17385 UPD:
Perl cookbook предлагает аж два варианта: один, помянутый выше, с массивом (7.17), другой — через временный файл (7.15) (спасибо, кэп).
Оба хуже.
В смысле — оба мне не нравятся, но видимо, лучше ничего нет. Скажите мне, что это не так…
No. 17387    
>>17385
>>17386
Мне кажется, это может быть то, что ты ищешь.

>The recent versions of File::Slurp provide convenient functions, edit_file and edit_file_lines

https://stackoverflow.com/a/6064207
https://metacpan.org/pod/File::Slurp#edit_file,-edit_file_lines 410й скорее всего эту ссылку безбожно сломает
No. 17388    
>>17387
>File::Slurp
Да, это именно то, что нужно. Спасибо!
No. 17392    
может кто пояснить, как люди сохраняют уровни игр в базе данных? его поле это ведь, по идее, большой двумерный массив
я, например, делал когда-то редактор японских кроссвордов, где мне нужно было сохранять статус каждой клеточки, которых могло быть до 200. и как это можно в базе сохранить? и чтобы сохранялась кроссплатформенность данных в базе, т.е. можно было написать игру для пк на шарпе, а потом под андроид на джаве и использовать одну базу с уровнями сериализация тут ведь не прокатит, да?
No. 17394    
>>17392
Обычно для удобства и кросс-платформенности просто используют свой формат для хранения информации.

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

В твоём случае описать состояние клеточки можно 0 или 1. Учитывая, что 200 клеточек это на самом деле очень мало, есть смысл хранить состояние поля как двумерный массив в котором 200 строчек, в каждой из которых 200 клеточек, представленных 0 или 1. Как это засовывается в базу? Тут зависит от места хранения и языка на котором пишется игра, формат подбирается для наибольшего удобства.

В современных веб-реалиях, например, игровое поле бы хранили как строку в JSON формате, т.е. это было бы такое прямолинейное текстовое описание уровня:

{
 "name": "level one"
 "field_status": [
    [[0, 0, 1, 0, 0, 0, ... 1], [...], [...], ... [...]],
    [[...], [...], [...], ... [...]],
    [[...], [...], [...], ... [...]],
    ...
    [[...], [...], [...], ... [1, 1, 1, 1, 0, 1, 1, ... 0]]
  ]
}

В таком виде его можно хранить и в localStorage браузера, и в noSQL базе-данных, типа mongo, и в SQL-базе данных, просто засовывая эту строку в текстовое поле. Главное тут преобразование из этого формата и обратно. В случае JSON и веб-реалий браузеры умеют это из коробки

Индекс элемента в таком массиве и служил бы его координатой.

>сериализация тут ведь не прокатит, да?
Ты сильно узко берешь сериализацию, сериализовать можно же не только в какой-то бинарный, но и например и в текстовый формат. Как в примере выше
No. 17395    
>>17394
спасибо за ответ!
вау, мне нравится идея с джейсон. а как ты думаешь, проблем с сохранением в sql базу, скажем, полей побольше 50х30=1500 клеточек, например в виде json не будет? там де вроде ограничение длины в 4000 символов, если не ошибаюсь.
вообще, хотелось бы доделать эту игру и развернуть mssql базу на azure, вот думаю, как бы лучше все сделать

кстати, при загрузке уровня на компьютер, как его лучше сохранять? каждый уровень в отдельном файл? хранить все загруженные уровни в коллекции, а потом сериализировать в файл? как-то еще?
No. 17396    
>>17394
>>17395
Я так понимаю, база понадобится в случае, когда станет очень дорого перезаписывать весь файл для сохранения уровня. Хотя даже в этом случае можно хранить уровень в нескольких файлах вместо одного .
No. 17397    
>>17395
>там де вроде ограничение длины в 4000 символов, если не ошибаюсь.
Нет, там есть большие текстовые поля:
MySQL: https://stackoverflow.com/a/13932834
MSSQL: https://stackoverflow.com/a/9853873

Но если вдруг проблемы возникнут вряд ли можно просто придумать свой, более компактный формат и собирать-разбирать из него. Это уже надо по месту смотреть и думать.

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

>Я так понимаю, база понадобится в случае, когда станет очень дорого перезаписывать весь файл для сохранения уровня
Нет, база нужна в основном для
>доделать эту игру и развернуть mssql базу на azure
No. 17400    
>>17397
> Но я бы начал с того чтобы хранить каждый уровень отдельно.
так и сделаю. а файлы с уровнями лучше называть по айди типа 142.lvl? папку с ними стоит делать скрытой?
No. 17401    
Здравствуйте.
Не совсем уверен, можно ли задать тут такой вопрос. Вообщем есть большое желание изучить HTML и CSS надеюсь я все правильно написал, но проблема в том, что я совсем не понимаю с какой литературы мне начать, знания нулевые и видимо берусь за слишком сложные книжки, которые не могу осилить. Если нетрудно, укажите правильный путь
No. 17403    
>>17400
>файлы с уровнями лучше называть по айди типа 142.lvl?
Зависит от того, что там будет. Просто уровень, или состояние в котором его оставил игрок. Но вообще, если внтури JSON, то можно имя / айди хранить внутри, а файл называть как угодно, хоть таймстампом.

>папку с ними стоит делать скрытой?
Можно скрытой, можно зиповать. Зачем кому-то читерить в кроссворде? Это ж сам себе злобный дятел.
No. 17404    
>>17401
HTML + CSS позволят тебе просто верстать странички. Если это всё что ты хочешь, то ок. Но если хочется именно заняться фронтендом т.е. в конечном счете делать интерфейсы для веб-приложений, то нужно еще понять джаваскрипт и популярные фронтенд фреймворки. и сопутствующие инструменты

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

Если ты пока совсем начинающий, давай попробуем начать с первых туториалов на W3CSchools:
https://www.w3schools.com/html/default.asp
https://www.w3schools.com/css/default.asp
https://www.w3schools.com/js/default.asp

Как только схватишь базу, переходи к тыканию фреймворков. По самым популярным базовые туториалы есть на той же W3CSchools. Что касается того, какие из них выбрать, то немного о популярных фреймворках писали у нас в прошлом треде: http://410chan.org/dev/arch/res/14160.html#14188
No. 17420    
Файл: 150772489920.jpg-(112.61KB, 1245×712, g3h9nTpZssZPVZr5mg64mw.jpg)
17420
Ну что же вы, Балмеры?
https://meduza.io/feature/2017/10/09/my-platili-razrabotchikam-i-pisali-prilozheniya-za-nih-ne-pomoglo
No. 17421    
Приветствую анонимоусов!

Скопился некоторый ощутимый объём логов, скажем так, технологического процесса.
Логи писались человеком вручную в виде текста, придерживаясь некого специального формата.
Есть желание по всей этой массе (сотни файлов по несколько десятков записей каждый) подвести некую статистику и, если получится - выявить закономерности.
Т. е. получаем нечёткую задачу обработки данных. "Нечёткую" - в том смысле, что ТЗ будет активно меняться в процессе на основе получаемых результатов.
Кроме того, почти наверняка понадобится "обратный ход данных". Т. е. в процессе обработки будут выявляться неизбежные ошибки в записях, и хорошо бы будет в автоматическом режиме исправлять исходный массив файлов, чтоб в дальнейшем работать с более согласованными данными.

Какие инструменты посоветуете? Подойдёт ли что-то готовое (статистические пакеты? Excel + VBA? MATLAB?)
Пока что считаю, что придётся писать что-то своё на одном из ЯП. Для начала - некий движок с чисто текстовым вводом-выводом, потом, при желании - прикручивать к нему некий GUI.

В программировании есть небольшой опыт на C/C++, Python и такой экзотике, как тикль (tcl). Алсо, Pascal (школа...); с Delphi не знаком. Фреймворкам не обучен. Прогать планируется исключительно на винде, желательно - хотя бы для начала на чём-нибудь "лёгком" (интерпретатор Python, прикрученный к текстовому редактору - ок, Visual Studio - не ок).

Из программистских грехов остро страдаю Нетерпением, так что задачу планирую реализовывать маленькими законченными шагами.

Пока что, склоняюсь к Python + использование TDD, которое собираюсь по ходу осваивать.

Что посоветуете выбрать из инструментов? И какие книжки (не оче большие - см. "нетерпение") посмотреть для уточнения подходов к, собственно, решению?
No. 17422    
>>17421
> Excel + VBA
Ненене.
Начни с питончика, там должны быть модули для статистики и всего на свете. Матлаб даже не знаю, в каком случае был бы предпочительней. Если ехала матрица через матрицу.
No. 17423    
Файл: 150777571310.jpg-(495.82KB, 595×841, 9157815.jpg)
17423
Бамплимит, готовьте новую нить.
No. 17425    
>>17423
Сделали новую нить >>17424
Закрепите её вместо этой, пожалуйста.
No. 17427    
>>15681
>>17421
>>17422

ПЕРЕЕЗД: >>/dev/17424
ПЕРЕЕЗД: >>/dev/17424
ПЕРЕЕЗД: >>/dev/17424
No. 17531    
Есть программа на си. Компилируется gcc без предупреждений, но сегфолтится после считывания x.
Пожалуйста подскажите мне, какие опции gcc надо загуглить для тестирования этой програмки.
[code]
// Number 1
#include <stdio.h>
int main(void)
{
char c;
int x,y;
printf("Пoжалуйста введите значение x ");
scanf("%d", x);
printf("\n%d", x);
if (x<0)
y=x*x+1;
else if (x>1)
y=0;
else if ((x<1) && (x>0))
y=x+1;
printf("\ny = %d\n",y);

return 0;
}
[/code]
Удалить сообщение []
Пароль  
[Mod]