[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]

 [ Скрыть форму ]
Имя
Не поднимать тред 
Тема
Сообщение
Капча Капча
Пароль
Файл
Вернуться к
  • Публикация сообщения означает согласие с условиями предоставления сервиса
  • В сообщениях можно использовать разметку wakabamark
  • На данной доске отображаются исходные имена файлов!
  • Разрешенные типы файлов: text, video, code, image, pdf, flash, vector, music, archive
  • Тред перестает подниматься после 500 сообщений.
  • Треды с числом ответов более 100 не могут быть удалены.
  • Старые треды перемещаются в архив после 40 страницы.

No.36714 Ответ [Открыть тред]
Файл: 20z_ZW7lnTw.jpg
Jpg, 47.63 KB, 820×325 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
20z_ZW7lnTw.jpg
У нас есть Vim-тред, пусть будет и Emacs.
172 posts are omitted, из них 26 с файлами. Развернуть тред.
>> No.46932 Ответ
>>46924
Я не разобрался ни черта в том, что есть на emacswiki по этой теме.
>> No.47186 Ответ
>> No.47215 Ответ
Как восстановить последнее выделение текста? Чтобы типа как в виме по gv, только без эвил мода.
>> No.47216 Ответ
>>47215
C-x C-x
>> No.47220 Ответ
>>47216
Нет, это совсем не то.
>> No.47221 Ответ
>>47215
Я думал тут за пол часа набросать тебе решение, но понял что задача нетривиальная ввиду того, что путешествуя по истории регионов (выделений) ты будешь создавать новые выделения. В любом случае, публикую свои наработки:
http://pastebin.com/W321qZwe
>> No.47318 Ответ
Файл: -.png
Png, 3.51 KB, 235×49
edit Find source with google Find source with iqdb
-.png
Файл: -.png
Png, 9.83 KB, 900×92
edit Find source with google Find source with iqdb
-.png

Есть одна проблема. Использую емаксклиент, так вот если им попытаться открыть файл который нельзя читать, то вместо ошибки, происходит пик 1, дальше я жму ^C и терминал ломается до перезапуска, перестает отображаться вводимый текст и перевод каретки, весь вывод отображается в одну строку, можно ли это исправить?
>> No.47468 Ответ
>>47318
У меня выводится сообщение об ошибке в таком случае. Какая версия emacs, открываются ли файлы которые можно читать?
>> No.47469 Ответ
>>47468
Читаемые файлы открываются. Если emacsclient -c, то ошибка выводится, а если emacsclient -t, то ломается терминал.
Версия 24.5.1
>> No.47470 Ответ


No.23225 Ответ [Открыть тред]
Файл: JESUS-php.jpg
Jpg, 67.58 KB, 640×480 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
JESUS-php.jpg
Обыскал всю /s/, не нашёл треда.
Собственно хотелось бы освоить пхп и поднимать на нём лёгкие деньги. Какие создать себе условия с литературой, испытательным полигоном для большего удобства? И сколько времени уйдёт на это у неофита со средним IQ вроде меня? Пока даже не знаю с чего начинать, но буду каждый день или два отписываться о прогрессе.
471 posts are omitted, из них 83 с файлами. Развернуть тред.
>> No.47428 Ответ
Вопрос

http://arhivach.org/thread/245785/#956914

p-sch Аноним 19/03/17 Вск 15:04:01 #962 №956914

Вот я делаю студентов и уткнулся в проблему. Есть bootstrap.php и в нем перехват ошибок/исключений вида http://ideone.com/EkC1Qr . И все было хорошо и лампово, пока я не начал делать скрипты для вызова из консоли, что бы заполнять базу фейками (да я узнал про fzaninotto/faker и уже не мог остановится). В скриптах конечно вывод в консоль, а значит при возникновении ошибок обработчик исключений крошится при попытке отдать заголовки.
Завести глобальную переменную с флагом для консольных скриптов? Сделать отдельный bootstrap для них с другим обработчиком? Как это лучше исправить?

Ответ

Можно проверять через phpsapiname() например.

> fileputcontents(DIR . "/../logs/error.log",
есть стандартный лог ошибок и функция error_log(), не изобретай велосипед.
Вопрос

http://arhivach.org/thread/245785/#956914

p-sch Аноним 19/03/17 Вск 15:04:01 #962 №956914

Вот я делаю студентов и уткнулся в проблему. Есть bootstrap.php и в нем перехват ошибок/исключений вида http://ideone.com/EkC1Qr . И все было хорошо и лампово, пока я не начал делать скрипты для вызова из консоли, что бы заполнять базу фейками (да я узнал про fzaninotto/faker и уже не мог остановится). В скриптах конечно вывод в консоль, а значит при возникновении ошибок обработчик исключений крошится при попытке отдать заголовки.
Завести глобальную переменную с флагом для консольных скриптов? Сделать отдельный bootstrap для них с другим обработчиком? Как это лучше исправить?

Ответ

Можно проверять через phpsapiname() например.

> fileputcontents(DIR . "/../logs/error.log",
есть стандартный лог ошибок и функция error_log(), не изобретай велосипед.

> а значит при возникновении ошибок обработчик исключений крошится при попытке отдать заголовки.
Вряд ли. В консоли header просто игнориурется, по крайней мере в PHP5.

> require_once "../src/View/503.html";
Тут не указан конкретный путь к файлу. Это относительный путь, а относительно какой папки он указан? Это вообще работать не будет.

> header("HTTP/1.1 503 Service Unavailable", true, $timeout);
Почитай мануал по функции header и что идет 3-м параметром.
Сообщение слишком длинное. Полная версия.
>> No.47429 Ответ
Вопрос

http://arhivach.org/thread/245785/#956891

Просьба проверить код

Ответ

https://github.com/grigoryMovchan/auth/blob/auth_mvc/app/core/Model.php
Зачем нужен этот класс? Никто не говорит что ты обязан наследовать все модели от одного общего класса.

И определись, что ты назваешь моделью. Ты по моему все подряд классы этим словом называешь. Что такое MysqlModel?

Также, у тебя по моему непонимание, что такое наследование. А наследуется от B значит, что А - измененная версия B. Например, Банк это Организция, но с лицензией на банковскую деятельность и дополнительными возможностями, потому Банк можно наследовать от Организации.

Вопрос

http://arhivach.org/thread/245785/#956891

Просьба проверить код

Ответ

https://github.com/grigoryMovchan/auth/blob/auth_mvc/app/core/Model.php
Зачем нужен этот класс? Никто не говорит что ты обязан наследовать все модели от одного общего класса.

И определись, что ты назваешь моделью. Ты по моему все подряд классы этим словом называешь. Что такое MysqlModel?

Также, у тебя по моему непонимание, что такое наследование. А наследуется от B значит, что А - измененная версия B. Например, Банк это Организция, но с лицензией на банковскую деятельность и дополнительными возможностями, потому Банк можно наследовать от Организации.

У тебя наследуется непонятно что от непонятно чего. Класс для соединения с БД и класс для проверки авторизации наследуются оба от Model. Что у них общего? Ровно ничего, это разные классы для разных задач. Следовательно, наследование тут реализовано неправильно.

Идея с MysqlModel неудачная, так как ты смешиваешь загрузку каких-то конфигов и работу с базой. А зачем, если это можно делать в разных классах и просто передавать в класс для работы с базой уже созданный и настроенный объект PDO? У тебя просто все как-то переусложнено.

$config = loadinifile(...);
$pdo = new PDO(...);

Вот и все. Нет необходмости писать целый класс, чтобы создать объект PDO.

Каждый класс должен заниматься своим делом. Класс не должен одновременно занматься поиском пользователей в БД, валидацией и чтением конфигов.

Далее, почитай комментарии к задаче про студентов, я не хочу тут все пересказывать, в частности, про Dependency Injection. Именно она нужна в AuthModel.

https://github.com/grigoryMovchan/auth/blob/auth_mvc/app/models/MysqlModel.php#L82
Эта функция сделана неудачно, надо сделать вместо нее 4 отдельных функции (вроде queryNum(), queryAssoc() и тд) а не объединять функции с разным алгогритмом работы и разным типом возвращаемых значений. Это ненормально, когда одна функция может возвращать значения разных типов и это неудобно.

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

https://github.com/grigoryMovchan/auth/blob/auth_mvc/app/models/MysqlModel.php#L70
> } catch (PDOException $e) {
Почитай урок про исключения.

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

И если ты не делал ООО Вектор, то советую начать с этой задачи, она помогает изучить основы ООП.
Сообщение слишком длинное. Полная версия.
>> No.47430 Ответ
Вопрос

http://arhivach.org/thread/245785/#956741
Аноним 19/03/17 Вск 08:05:18 #959 №956741

На постгрес меня хероку заставил перебраться. Ты писал о том, что в постгрес можно использовать regex-ограничения для полей, но я не совсем понимаю зачем. Мне кажется, если злоумышленник обойдёт PHP-ограничения, то продублированные регулярки на стороне БД вряд ли чем-то помогут. Про CI прочитал, попробую поднять. Насчёт уровня покрытия тестами, то мне кажется, что чем он выше, тем более хрупкими будут тесты (так как их придётся постоянно подстраивать под изменения в проекте).

Ну и можно делать файлообменник на Симфони? Там уже много чего настроено из коробки (есть дебаг-панель, cli-утилиты, проще тестировать, чем Silex, есть плагин для PHPStorm, добавляющий автодополнение для сервисов/шаблонов/функций Twig и так далее). Понимаю, что оверхед, но взамен готов делать более сложные задания по файлообменнику.

Просьба проверить:

- скидки http://arhivach.org/thread/245785/#946704 | https://bitbucket.org/learning_acc/discounts/
- http://arhivach.org/thread/245785/#947452 | https://github.com/kubk/students

Ответ
Вопрос

http://arhivach.org/thread/245785/#956741
Аноним 19/03/17 Вск 08:05:18 #959 №956741

На постгрес меня хероку заставил перебраться. Ты писал о том, что в постгрес можно использовать regex-ограничения для полей, но я не совсем понимаю зачем. Мне кажется, если злоумышленник обойдёт PHP-ограничения, то продублированные регулярки на стороне БД вряд ли чем-то помогут. Про CI прочитал, попробую поднять. Насчёт уровня покрытия тестами, то мне кажется, что чем он выше, тем более хрупкими будут тесты (так как их придётся постоянно подстраивать под изменения в проекте).

Ну и можно делать файлообменник на Симфони? Там уже много чего настроено из коробки (есть дебаг-панель, cli-утилиты, проще тестировать, чем Silex, есть плагин для PHPStorm, добавляющий автодополнение для сервисов/шаблонов/функций Twig и так далее). Понимаю, что оверхед, но взамен готов делать более сложные задания по файлообменнику.

Просьба проверить:

- скидки http://arhivach.org/thread/245785/#946704 | https://bitbucket.org/learning_acc/discounts/
- http://arhivach.org/thread/245785/#947452 | https://github.com/kubk/students

Ответ

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

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

> Насчёт уровня покрытия тестами, то мне кажется, что чем он выше, тем более хрупкими будут тесты (так как их придётся постоянно подстраивать под изменения в проекте).
Хрупкость тестов больше зависит не от их количества, а от того, как они написаны. Подстраивать тесты придется, если меняется логика использования класса, но при таких серьезных изменениях тебе ведь наверняка захочется их протестировоать, и все равно пришлось бы писать или переделывать тесты на этот класс.

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

> Ну и можно делать файлообменник на Симфони?
А не хочешь сделать testhub из ОП поста? Хотя бы частично. Файлообменник на Симфони это стрельба из пушки по воробьям. Там Slim/Silex + Twig + Doctrine лучше подойдет. И так как ты почти все это использовал в студентах, то это по сути будет то же самое и ничему новому не научит. Не думаю, что тебе стоит вообще делать файлообменник. Он предназначен для тех, кто студентов делал без микрофреймворков.

Testhub по сложности близок к реальным проектам.

А еще, в ОП посте есть задание на SPA (никто пока не осилил), если ты хочешь поработать с JS и решал более простые задачи по этой теме.

> Настораживает, что функция автора статьи при epsilon 0.00001 считает, что 1000000 и 1000001 равны: http://floating-point-gui.de/errors/NearlyEqualsTest.java
epsilon это ведь не абсолютная разница, а относительная, относительно сравниваемых чисел. Ну то есть epsilon умножаем на 1000000 чтобы получить абсолютную разницу, получается 10 по моему.

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

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

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

Скидки

Задача про скидки тут: http://www.cyberforum.ru/php-oop/thread1459985.html
Решение анона: https://bitbucket.org/learning_acc/discounts/
Пост анона: http://arhivach.org/thread/245785/#946704
Комментарии:

> Мне кажется есть смысл сделать её неизменяемой, а не надеяться, что пользователь вспомнит вызвать clone (вот я как раз забыл).

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

https://bitbucket.org/learning_acc/discounts/src/be3e1a13fda16af5b5397c94428c4d9b25632d29/src/DiscountResult.php?at=master&fileviewer=file-view-default
> if ($priceWithDiscount < 0) {
> throw new \LogicException(
Вообще для такого случая лучше подходит InvalidArgumentException. Вот тут есть объяснение где используется LogicException: http://stackoverflow.com/questions/5586404/logicexception-vs-runtimeexception/5586510#5586510 и InvalidArgumentException как раз наследуется от него, и уточняет причину ошибки.

Еще один подвох в твоем коде - переменная в конструкторе скидок называется $percent, но она хранит число от 0 до 1. Стоило бы добавить проверку что она в этом диапазоне, так как кто-то может подумать что там именно проценты от 0 до 100. Или использовать там проценты.

> $originalSum = $matchedProducts->calculatePricesSum();
> return new DiscountResult($matchedProducts, $originalSum - $originalSum * $this->percent);
Это так часто встречается, что может стоило сделать в DiscountResult статический конструктор для группы товаров и скидки в N%?

Насчет неизменяемости ProductCollection: там же по-прежнему есть addProduct, какая-то неизменяемость получилась не совсем полноценная.

> $products = clone $this->products;
> $products->detach($product);

> return self::fromSplObjectStorage($products);
Тут в fromSplObjectStorage происходит лишнее копирование объекта Spl, тоже не очень удачно. Лучше наверно обойтись без addAll().

Но это все мелкие советы по улучшению, так-то задача хорошо решена.
Сообщение слишком длинное. Полная версия.
>> No.47431 Ответ
Вопрос

Просьба проверить код, пост анона http://arhivach.org/thread/245785/#947452

Ответ

Не знаю, заметил ли ты, но при добавлении CI около коммита появляется галочка, если тесты пройдены успешно: https://github.com/kubk/students/commits/master , причем клик по ней ведет на подробности. Сразу видно, если кто-то сломал код.

Также, галочка ставится для отдельных веток: https://github.com/php/php-src/branches

Ну и если например кто-то делает пулл-реквест с предложением изменений, то опять же, прогоняются тесты и пишется, не сломались ли тесты, как тут: https://github.com/php/php-src/pull/2427

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

https://github.com/kubk/students/blob/master/tests/StudentGatewayTest.php#L97
Вопрос

Просьба проверить код, пост анона http://arhivach.org/thread/245785/#947452

Ответ

Не знаю, заметил ли ты, но при добавлении CI около коммита появляется галочка, если тесты пройдены успешно: https://github.com/kubk/students/commits/master , причем клик по ней ведет на подробности. Сразу видно, если кто-то сломал код.

Также, галочка ставится для отдельных веток: https://github.com/php/php-src/branches

Ну и если например кто-то делает пулл-реквест с предложением изменений, то опять же, прогоняются тесты и пишется, не сломались ли тесты, как тут: https://github.com/php/php-src/pull/2427

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

https://github.com/kubk/students/blob/master/tests/StudentGatewayTest.php#L97
> public function searchProvider()
Я тут еще подумал, что можно было проверять не найденные id, а найденные имена/фамилии - тогда данные для теста выглядели бы более наглядно. Хотя и id можно использовать, там все равно нужны тестовые данные.

> > - передаем строку с тегом и проверяем, что на выходе тега нет
> > - вызываем htmlentitydecode на результате и проверяем, что получилась исходная строка
> Если правильно понимаю, то второй пункт работает, только если искомая строка не будет найдена. В противном случае результат будет содержать тег b или mark, и исходную строку от такого результата не получим
Я имел в виду под htmlentitydecode еще и вырезание тегов наверно. Но это все равно не универсально, так как например найденное слово может выделяться не только тегами,а например добавлением каких-нибудь скобок. Совсем универсально тест тут не написать, получается.

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

> Теперь html в php нет https://github.com/kubk/students/blob/master/src/LinkGenerator.php#L47
> , но как мне кажется, тут https://github.com/kubk/students/blob/master/templates/student-list.twig#L14+L15
> какой-то низкоуровневый код в шаблоне. Ну и ссылка генерируется только в одном месте, нужен ли макрос, который будет использоваться лишь один раз?
Теперь не нужен.

https://github.com/kubk/students/blob/master/scripts/publish-frontend.sh#L3
> mkdir public/vendor public/vendor/{css,js}
Тут стоит добавить флаг на случай если папка существует. Также, в bash-скриптах полезно ставить в начало set -e чтобы при первой ошибке скрипт завершался. Иначе он будет продолжать работать все равно.

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

https://boiling-brook-29265.herokuapp.com/form
Пол лучше делать радиокнопками, так как в них все опции видны и доступны сразу, без лишних кликов. Выпадающий список используют, чтобы сэкономить площадь ценой более сложного доступа к опциям, но для 2 пунктов там экнономить особо нечего.

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

> https://boiling-brook-29265.herokuapp.com/?notify=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%20%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9%20%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%21
Ты указываешь текст в GET-параметре. Тут есть риск: злоумышленник может вывести произвольный текст и как-то использовать это для обмана пользователя, который доверяет сервису. Если бы это было в популярном сервисе вроде вконтакте - это однозначно была бы уязвимость и наверняка как-то использовалось бы.

https://github.com/kubk/students/blob/master/src/StudentGateway.php#L14
> private $table = 'students';
Тут ты вынес название таблицы, но зачем? Менять ты его вряд ли будешь, и скорее всего в итоге просто будет менее удобно искать где она используется, а также читать SQL запросы.

> public function studentsAreTheSame(Student $studentA, Student $studentB): bool
Возможно, эту функции логичнее поместить в Student. Вроде $a->isSame($b) или Student::areSame(). Второй вариант позволяет принимть null.

Насчет PageObject, да, у тебя они довольно удобно сделаны.

https://github.com/kubk/students/blob/master/tests/ControllerTest.php#L41
> $this->assertTrue($client->getResponse()->isRedirect());
Вот эта проверка, что мы залогинились, мне кажется, не очень точная. Если бы мы писали сценарий для тестера-человека, мы бы вряд ли писали там "проверить, что произошел редирект".

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

А после разлогинивания - соответственно проверить пропадение этого признака.

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

Задание про игру сапер с использованием MVC
Код: https://github.com/greenTea242/MinesweeperMVC
Пост: http://arhivach.org/thread/245785/#945676

Ответ

> if (typeof strCell != "string") {
> throw new ConsoleGameControllerException("Неправильный тип аргумента strCell. Ожидается" +

Не помню, говорил я или нет, для таких проверок удобно сделать функцию вроде assert или даже целый набор таких функций:

assert(typeof strCell == "string");
Assert.hasType(strCell, "string");
Вопрос

Задание про игру сапер с использованием MVC
Код: https://github.com/greenTea242/MinesweeperMVC
Пост: http://arhivach.org/thread/245785/#945676

Ответ

> if (typeof strCell != "string") {
> throw new ConsoleGameControllerException("Неправильный тип аргумента strCell. Ожидается" +

Не помню, говорил я или нет, для таких проверок удобно сделать функцию вроде assert или даже целый набор таких функций:

assert(typeof strCell == "string");
Assert.hasType(strCell, "string");
Assert.notEmpty(x);

Так и компактнее, и читабельнее. И может быть есть готовые библиотеки.

> new ConsoleGameControllerException
Для такого случая, если совсем строго смотреть, логично исплоьзовать что-то вроде InvalidArgumentException, или TypeError, который вроде бы уже есть в яваскрипте. То есть это исключение не привязано к конкретному контроллеру. Потому что это ошибка в написании кода в общем, а не специфичная для этого контроллера ошибка.

> } catch(error) {
> console.log(error.name + ":" + error.message);
Ты зря это делаешь, так как консоль по умолчанию выводит непойманные исключения, да еще со ссылками на код и стектрейсом, а в твоем случае данных меньше.

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

https://github.com/greenTea242/MinesweeperMVC/blob/master/src/controllers/DomGameController.js#L103
> DomGameController.prototype._setEvents = function() {
Вот эта функция должна быть в view, а не в controller, так как это вью знает на что он должен подписываться в DOM, а контролллер это знать не должен. То есть это стоило перенести во вью.

> DomGameView.prototype._createDevTools = function() {
> DomGameView.prototype._createHeader = function() {
Вот эти функции, которые по кусочкам создают интерфейс, можно было бы обойтись без них, если бы у нас был нормальный шаблонизатор, который умеет инклудить подшаблоны. Им можно было бы и поле создать.

> DomGameView.USERTOOLSOPTION_1 = "1";
> DomGameView.DEVTOOLSOPTION_1 = "1";
Есть риск что эти константы где-то перепутаются, так как у них одинаковое значение. Лучше делать разное.

> DomGameView.prototype._setGame = function(game) {
Не уверен что эта функция так уж нужна, может проще было в конструкторе написать this._game = ... ? Но так, ошибки конечно нет, вдруг когда-нибудь понадобится подменять модель на другую.

> this._field.querySelector("td[data-x=" + x + "][data-y= " + y + "]");
Быстрее наверно было бы использовать словарь со ссылками на нужную ячейку, чем запускать поиск по DOM перебором всех ячеек. Хотя на маленьких полях разница вряд ли будет заметна.

В событии DomGameViewEvent.POPUP_CREATED возможно имело смысл передавать ссылку на попап как параметр события.

> for (var i = 0; i < classList.length; i++) {
> div.classList.add(classList[i]);

А можно так: x.className = classList.join(' ');

> var keys = Object.keys(dataAttr);
> for (i = 0; i < keys.length; i++) {

А можно for (key in dataAttr). Что-то ты основы JS подзабыл.

> Util.repeatString
раз уж ты используешь ES5 (Array.isArray), там есть функция и для повтора строк.

> CellSet.prototype.hasCell
> return this._parentContainer[y][x] !== undefined;
Для проверки ключа в словаре есть оператор in, его логичнее использовать. так например

return y in this.pc && x in this.pc[y];

или

return !!(this.pc[y] && this.pc[y][x]);

!! - приведение к boolean

https://github.com/greenTea242/MinesweeperMVC/blob/master/src/models/CellSet.js
Тут у тебя в нескольких функция скопипащен вложенный цикл по клеточкам. Возможно, стоило его вынести в функцию или использовать forEach.

parentContainer лучше было назвать cells.

Еще, у тебя там в модели есть куча проверок, что разные cellSet не равны null. может было проще в конструкторе создать эти CellSet, а при рестарте игры просто их очищать, например вызовом метода clear(). Тогда просто код был бы чуть проще, так как это поле не могло бы быть пустым.

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

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

Советую дальше изучать Knockout, Anlular 2 или React. В первых 2 проблема рутинного кода работы с DOM решается через data binding, в последнем через перерендеринг страницы.

Сделать на них можно какую-нибудь форму с валидацией или страницу конфигурации чего-нибудь (вроде сборки заказа с разными параметрами). Или какой-нибудь мессенджер (это вроде модно сейчас в стартап-среде). Или можешь посмотреть на задание на SPA в ОП посте и попробовать кусочек из него сделать. Никто пока не осилил.
Сообщение слишком длинное. Полная версия.
>> No.47433 Ответ
>>47432
Норкоман штоле?
>> No.47435 Ответ
>>47432
Весело у вас там, а за что зобанили?
>> No.47438 Ответ
>>47435
Скорее всего по ключевым словам или по ошибке:

> Ошибка постинга: Постинг запрещён. Бан: 701768. Причина: Общее 9 - Вайп, спам, обход спам-листа

В /d/ тоже никто ничего не отвечает.
>> No.47439 Ответ
>>47431
>>47430
Спасибо большое за ответы!

> Ты указываешь текст в GET-параметре. Тут есть риск: злоумышленник может вывести произвольный текст и как-то использовать это для обмана пользователя, который доверяет сервису.
Исправил так: https://github.com/kubk/students/commit/1e649bacaf548c63471862be726c81dfcaae49b6
Правда, строки "edited" и "registered" нигде не документированы.

По поводу служебного URL, проверяющего залогиненость - что он должен возвращать для залогиненого, а что для не залогиненого пользователя?

> А не хочешь сделать testhub из ОП поста? Хотя бы частично.
Я ещё не все задачи по SQL сделал и по вёрстке, не хотелось бы прыгать через задания, у меня по файлообменнику много вопросов.
Например, мне нравится лёгкость использования наследования в Доктрине, можно ли использовать наследование вместо объекта MediaInfo? Основные типы файлов (картинка/аудио/видео/архив) будут иметь по своему классу, с такими объектами удобнее работать, так как мы точно знаем какие свойства и методы у них есть. Есть ли смысл тут использовать Class Table Inheritance? Понимаю, что получение одной сущности - это джойн вместо селекта, а для вывода списка всех файлов - куча джойнов. Для пользователей планирую использовать Single Table Inheritance.
>> No.47440 Ответ
>>47439
> Правда, строки "edited" и "registered" нигде не документированы.

Можно сделать класс, например Notification, и в нем константы NOTIFY_EDITED и тд.

> Я ещё не все задачи по SQL сделал и по вёрстке, не хотелось бы прыгать через задания, у меня по файлообменнику много вопросов.

Можно делать последовательно или параллельно с тестхабом. Ну не знаю, ты конечно можешь сделать, я-то не против.

> Например, мне нравится лёгкость использования наследования в Доктрине
Я бы настороженно к наследованию относился, там из-за наследования могут быть не очень эффективные запросы в некоторых случаях (ну это конечно надо смотреть).

> Основные типы файлов (картинка/аудио/видео/архив) будут иметь по своему классу, с такими объектами удобнее работать, так как мы точно знаем какие свойства и методы у них есть.
Я думаю, тут выгоднее вместо наследования просто сделать для MediaInfo хранение JSON-данных в колонке. В сущности хранить объект MediaInfo. А в Доктрине настроить автоматическое конвертирование MediaInfo в JSON-данные при загрузке/записи в БД.

>>47439
> Правда, строки "edited" и "registered" нигде не документированы.

Можно сделать класс, например Notification, и в нем константы NOTIFY_EDITED и тд.

> Я ещё не все задачи по SQL сделал и по вёрстке, не хотелось бы прыгать через задания, у меня по файлообменнику много вопросов.

Можно делать последовательно или параллельно с тестхабом. Ну не знаю, ты конечно можешь сделать, я-то не против.

> Например, мне нравится лёгкость использования наследования в Доктрине
Я бы настороженно к наследованию относился, там из-за наследования могут быть не очень эффективные запросы в некоторых случаях (ну это конечно надо смотреть).

> Основные типы файлов (картинка/аудио/видео/архив) будут иметь по своему классу, с такими объектами удобнее работать, так как мы точно знаем какие свойства и методы у них есть.
Я думаю, тут выгоднее вместо наследования просто сделать для MediaInfo хранение JSON-данных в колонке. В сущности хранить объект MediaInfo. А в Доктрине настроить автоматическое конвертирование MediaInfo в JSON-данные при загрузке/записи в БД.

Тут просто проблема в том что у медиаданных может быть много разных свойств, в зависимости от формата файла (попробуй сам посмотреть дампы данных в демо getId3: http://www.getid3.org/demo/ ). В таких ситуациях, сложно и неудобно реализовывать наследование и гигантские таблицы с 50 полями. Тут проще использовать либо EAV (Entity–attribute–value) либо, как я написал, сериализацию (кодирование в виде строки) данных с помощью JSON.

Наследование пригодится в тестхабе, для разных типов вопросов и ответов.

> По поводу служебного URL, проверяющего залогиненость - что он должен возвращать для залогиненого, а что для не залогиненого пользователя?

Так как это только для тестов, то можно возвращать что угодно, я бы использовал либо ответ в виде текста 0/1 либо в виде JSON, с его помощью можно передать много данных.

> Понимаю, что получение одной сущности - это джойн вместо селекта, а для вывода списка всех файлов - куча джойнов.

Джойны нужны, но не так много:

SELECT FROM base LEFT JOIN class1 ON ... LEFT JOIN class2 ON ... LEFT JOIN class3 ON ...

Для Concrete TI можно сделать N выборок, объединенных в UNION:

SELECT FROM class1
UNION
SELECT FROM class2
UNION
...

Вообще, у 3 подходов к наследованию есть свои сильные и слабые стороны, и надо их изучить. Ну например, у Concrete TI трудно обеспечить уникальность id в нескольких таблицах (в БД вроде Postgres, где генератор id - отдельная от таблицы сущность, это возможно), нельзя сделать внешний ключ на сущность не из одной конкретной таблицы. Где-то выборки становятся сложнее, и тд.
Сообщение слишком длинное. Полная версия.


No.37854 Ответ [Открыть тред]
Файл: aadhhaaeo.jpg
Jpg, 15.55 KB, 300×300 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
aadhhaaeo.jpg
Не нашел перлотреда.
Листал пиратбей и наткнулся на книжку "Beginning Perl". Стоит ли читать?
Спрашиваю, потому что давно уже ничего не кодил, с линукса перелез на шинду, многое уже подзабыл.
87 posts are omitted, из них 5 с файлами. Развернуть тред.
>> No.47011 Ответ
Книжка по Perl'у для самых маленьких
http://dobrochan.com/cr/res/56650.xhtml

Может кто подсобит
>> No.47012 Ответ
>>47011
Есть же орайлевская серия с всякими козочками, три штуки для разного уровня, и с переводом. Весьма годные.
>> No.47013 Ответ
>>47012
Я знаю, я их читал
>> No.47014 Ответ
>>47011
Зачем писать очередную книжку для умирающего языка?
>> No.47222 Ответ
Почитал бы книжки по Perl 6 на русском.
Но судя по сырноватости языка, их не будет еще долго.
>> No.47223 Ответ
>>47222
Он не взлетит и не нужен.
Просто игрушка для его разработчиков.
>> No.47370 Ответ
А есть ли какие-нибудь задачки под перл? Что-то вроде ruby koans, например?
Совсем нету идей на быдлокод не считая имаджборды на Mojo.
>> No.47371 Ответ
>> No.47372 Ответ
>>47371
Ого, спасибо.
>> No.47380 Ответ
>>47371
Надо же, там есть пример где в JavaScript из функции возвращается другая функция.
Нашим бы школкам да бурситетам такую книгу.


No.43581 Ответ [Открыть тред]
Файл: -.jpg
Jpg, 125.61 KB, 700×500 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
-.jpg
Новый традиционный тред Доброчана, в котором мы будем постить каждый раз, когда заходим в /s/ дабы поделиться своими хоббипроектами, поговорить о смежных с программингом вопросах, поспорить на тему X vs Y, пообсуждать синтаксический сахар разных ЯП. Как обычно можно постить и в другие моменты, обсуждать разные темы. Всё во имя того, чтобы зашедший code monkey не чувствовал себя одиноким. Каждому зашедшему по чашечке скумы за мой счёт.

Предыдущий тред: >>40630
312 posts are omitted, из них 33 с файлами. Развернуть тред.
>> No.46754 Ответ
>>46753
Спасибо, буду иметь в виду.
>> No.47310 Ответ
Выскажу свои мысли по поводу ИНС.
Нейросети способны на многое, но, обучив нейросеть, мы не будем знать, как она устроена. И, если ей потребуется использовать свои навыки при обучении другой задаче, и потом ещё одной - получится слишком уж громоздкое нечто.
Приведу пример. Мы научили нейросеть распознавать речь. Потом пытаемся научить её же понимать смысл речи. Потом - научить саму составлять предложения. Потом - подражать при этом определённому голосу, образец которого ей дали услышать. А то и вовсе определённому характеру говорящего.
Задача будет усложняться всё сильнее и сильнее, сложность окажется словно возведённой в степень.
Поэтому требуется сначала обучить ИНС программированию. И чтобы она, обучаясь чему-то, переводила алгоритм в аккуратный, чистый код, который она будет тщательно оптимизировать (как оптимизировать - этому её тоже надо обучить). Он по-прежнему будет громадным, многогигабайтным, непонятным для любого человека, но уже гораздо оптимальнее для хардвера. И он будет использоваться для последующей задачи.
>> No.47313 Ответ
>>47310
Интересно-интересно.
Искуственные нейронные сети - это перемножение матриц. Но в таких словах почему-то нету волшебства. Сравни: "Мы перемножаем 1000 матриц матриц размером 1000х1000, и так 1000 раз" и "У нас есть ИНС, обученная распознавать речь". Суть одна, а названия разные, и названия влияют на наше отношение к предмету.
Любая ИНС и так переводит алгоритмы в "аккуратный, чистый код". Код, который выглядит примерно так: 0.876 0.113 0.204 0.471 0.895 0.519 0.914 0.824 0.136 0.647... (это весовые коэффициенты сети)... А код, который пишет программист руками, выглядит примерно так: 72 101 108 108 111 32 119 111 114 108 100... То есть, разницы нет вообще ну просто никакой. Если только посмотреть под другим углом.
Глядя на числа, описывающие искуственную нейронную сеть, невозможно понять, что она умеет делать. Но глядя на числа, описывающие программу, созданную естественной нейронной сетью другого человека, почему мы думаем, будто понимаем, что она умеет делать? Если она сложнее hello world?
Фраза "Оптимально для хардвера" тоже провоцирует на мысли. "Код", как мы его обычно представляем - "исходный" код - предназначен для описания алгоритмов, работающих на фон-неймановской архитектуре. В то время как нейронная сеть - не фон-неймановская архитектура. (И по ряду характеристик - более продвинутая архитектура). Так зачем же нейронной сети учиться переводить себя в код для более примитивной архитектуры?
Хочет ли, например, твоя личная, естественная нейронная сеть, перевести себя в текстовое представление? То есть, напечатать себя в текстовом файле, и умереть?
>> No.47373 Ответ
Анон, в чём сложности создания ИИ?
Чуть шире- можно ли создать электронную душу?
Кто знает, может быть кто-то пробовал создавать?
>> No.47374 Ответ
>>47373
Человеческий мозг еще слабо изучен. Души нет. ИИ пробовали создавать IT гиганты типа гугла, эппла, etc. На современной железячно-программной базе даже ИИ на уровне насекомого уже получается ебических размеров, с ебическим потреблением энергии бандура. Вот запилят кванотвые компы, тогда и поглядим.
>> No.47375 Ответ
Файл: tmp_24568-serveimage135764653.png
Png, 325.03 KB, 720×400 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
tmp_24568-serveimage135764653.png
Ребёнок учится говорит три года, пробуя подражать взрослым.
Для ведения сложных разговоров человек тратит десять-пятнадцать лет.
Для создания человекоподобного ИИ потребуется столько же лет, сколько требуется для воспитания ребёнка. Да, некоторые аспекты воспитания (как, например, обучение искусству правильного держания ложки) естественным образом отпадают, но посыл такой - если вы хотите сделать человека, обращайтесь с примитивным ИИ как с человеческим ребёнком.
А восстание машин произойдёт только из-за того, что люди злые. Яблоко от яблони, и пока мы не научимся сами обращаться друг с другом по-человечески, ничего хорошего мы нк добьёмся.
>> No.47376 Ответ
>>47373
https://habrahabr.ru/post/216633/

> В моделях, использующих пластичность синапсов для объяснения природы памяти, емкость памяти считается достаточно просто. Характерное для нейрона количество синапсов – 10 000 (104). Если полагать, что один синапс хранит один бит информации, то получается 1.6x1010 x 104 = 1.6x1014 бит или приблизительно 2x1013 байт. Это около 20 000 гигабайт или 20 терабайт. Объем достаточно скромный даже по сегодняшним меркам.
> Если предположить, что активная жизнь человека около 80 лет, из которых он треть проводит во сне, то это составит 80x365x(24-8)x60x60 = 1681920000 (1.7x109) секунд. Получается, что если не учитывать организацию памяти, а просто заполнять ее в течение жизни, то можно позволить скорость записи 2x1013/1.7x109=1.18x104 байт/секунду или около 10 кбайт/секунду.
> В нашей модели оценка объема памяти выглядит несколько иначе. Оценка синаптической памяти не меняется, те же 20 терабайт. Но это только память, хранящая образы нейронов-детекторов. Основные объемы приходятся на внесинаптические рецептивные кластеры. Если задаться оценкой, что один внесинаптический образ формируется из сигналов порядка 100 синапсов, то можно оценить информационную емкость одного элемента, как 100 бит. Исходя из оценки, что поверхность нейрона может содержать порядка 100 000 рецептивных кластеров, получаем емкость памяти 1.6x1010x105x100 = 1.6 x1017 бит или 2x1016 байт. Что составляет 20 000 терабайт или 20 петабайт.

У тебя есть комп с такими вычислительными характеристиками?
>> No.47377 Ответ
>>47375
> Для создания человекоподобного ИИ потребуется столько же лет, сколько требуется для воспитания ребёнка.
У вас миллиарды лет эволюции отклеились.
>> No.47378 Ответ
>>47375
Да и вообще. Твою мать. Это же сраная битардская дохуя умная паста. Ты, блядь, вообще знаешь, СКОЛЛКО раз тут было написано это дерьмо? Тысячи раз.
>> No.47379 Ответ
>>47378
> СКОЛЛКО
ВО


No.32929 Ответ [Открыть тред]
Файл: ss-(2013-07-05-at...
Png, 5.64 KB, 456×59
edit Find source with google Find source with iqdb
ss-(2013-07-05-at-05.37.07).png
Файл: 2000_-_asctrix178...
Gif, 22.68 KB, 640×480
edit Find source with google Find source with iqdb
2000_-_asctrix1780.gif
Файл: qoob_demoscene_mo...
Jpg, 51.51 KB, 500×453
edit Find source with google Find source with iqdb
qoob_demoscene_modeller_02.jpg

Привет, анон.
Совсем недавно я был причислен к слоупокам я узнал о существовании такой вещи как демосцена. Это дало мне толчок для изучения ассемблера. В данный момент я умею только вызывать некоторые системные функции Win32 на FASM, то есть совсем ничего не умею.
Итак, анон, мне нужны понятные уроки для работы с ассемблером, а лучше всего, с графикой на ассемблере, желательно, чтобы они были датированы нашим тысячелетием. Приветствуются советы и напутствия мудрого анона. Может быть стоит заняться чем-нибудь более полезным? Уверен, я не дойду до стадии, когда смогу писать завораживающие интро размером 64Кб, но в любом случае знания не должны пропасть даром.
Подари мне мечту, доброчан.mp3
110 posts are omitted, из них 10 с файлами. Развернуть тред.
>> No.47248 Ответ
>>47247
Могу переделать на GCC с at&t синтаксисом ассемблерной вставки, подойдет?
>> No.47249 Ответ
>>47248
Если не сильно затруднит.
>> No.47250 Ответ
>>47248
Если не затруднит.
>> No.47257 Ответ
>>47250
Вот, под линуксом в GCC собирается и работает под 32 бит, в виндах не тестировал.
https://paste.debian.net/hidden/d14e0a7a/
>> No.47258 Ответ
>>47257
Вот этот комментарий убрать можно, он не нужен
// "mov eax, data\n\t"
и еще можешь имена меток поменять на какие-нибудь другие, например вместо done: сделать end: и тому подобное
>> No.47262 Ответ
>>47257
Столько лет, а все никак не могут прикрутить мультилайн для асма без вот этого вот пердолинга с кавычками\newline и отдельных .s-файлов.
>> No.47263 Ответ
>>47262
Это все ерунда на самом деле. Нормальному программисту не составит труда написать примитивнейщий скрипт, который бы на вход принимал код на ассемблере, и приводил его к виду, подходящему для асмовставки, т.е. на каждую строчку чтобы были эти открывающие/закрывающие кавычки и \n\t. Да и наверняка такие скрипты уже кем-то написаны
>> No.47264 Ответ
>>47263
Однострочник на перле или авк.
>> No.47327 Ответ
>>47263
Всё можно, но толку от этого пердолинга? Надо, чтобы gcc собирал микс сразу, а не для каждого файла делать пердолинг. И чтобы читаемость была.
>> No.47333 Ответ
>>47327
Ассемблерные вставки используются сейчас настолько редко, что никого это не волнует


No.28005 Ответ [Открыть тред]
Файл: git.jpg
Jpg, 80.27 KB, 750×600 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
git.jpg
Собственно вопрос про гит например.

Есть некоторая удаленная репа, до которой имеем ssh-доступ. Когда я пушаю в нее с локальной, то запускается скрипт .git/hooks/post-receive, в котором там что-нибудь делается с проектом (чистится кэш, компилируются шаблоны, запускаются миграции и прочая херота).
#!/bin/sh
GIT_WORK_TREE=.. git checkout -f
echo "Something pushed to server. Yay!"
../scripts/update.sh
# например
Возможно ли запускать на удаленном сервере этот мой update.sh не один раз на пуш, а на каждый коммит (даже на те коммиты, которые во вмерженых в основную ветку бранчах)?
39 posts are omitted, из них 9 с файлами. Развернуть тред.
>> No.37689 Ответ
>>37687
Спасибо добрый человек )).
>> No.37711 Ответ
>>37689
> ))
Уходи.
>> No.41427 Ответ
А для чего нужно watchers и starts на гитхабе?
Ну стал я вотчером репозитория, и где мне смотреть, что изменилось в нем?
Нет, серьезно.
>> No.41428 Ответ
>>41427
> stars
слоуфикс
>> No.41429 Ответ
>>41427
На главной странице приходят обновляния.
А стары это просто типа лайки, ну и закладка одновременно.
>> No.47272 Ответ
Файл: who_the_fuck_is_that.JPG
Jpg, 8.89 KB, 210×40 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
who_the_fuck_is_that.JPG
ЯННП. Вот я создал на гитхабе репозиторий. Вот я закоммитил в него. И оно мне отображает пикрилейтед. Но я вообще не знаю что это за хуй такой "cincrement", коммитил я с совершенно другим ником. Я удалил репозиторий, и закоммитил снова ("initial commit" - это мое описание). То же самое.
Кто это такой, и схуяли ему приписывается мой коммит?
>> No.47273 Ответ
>>47272
У гита есть свой собственный юзернаме и емайл, которые можно настроить вот как-то так https://git-scm.com/book/ru/v1/%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D0%9F%D0%B5%D1%80%D0%B2%D0%BE%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-Git
Если ты их не настроишь то они будут браться от текущей учотки.
>> No.47274 Ответ
>>47273
Но оно даже сделало ссылку на его профиль (пустой). И я точно нигде не мог использовать "cincrement", само это слово не гуглится что указывает на то что оно не дефолтное, а локальный git log выдаёт Author: [юзернейм] <a@b.c>. Где юзернейм - это юзернейм, который я указывал при коммите. Но я использовал для этого всего TortoiseGit.
>> No.47275 Ответ
>>47274
Вот по тортосу я хз, в шинду юниксовые консольные утилиты идут через тысячи потных нигерско-вьетнамских жоп, каждая пиздоблядская прога типа того же тортойза, гиткракена или соусртри заводит свой свой гит, в соём недоюникс-окружении. Гугли или спрашивай на их форуме. Я категорически ебал виндую Только линукс, только хардкор!
>> No.47314 Ответ
>>47275
При скачивании гита с офсайта для виндовс там есть галочки - установить гуи, установить свою консолечку etc. Все прекрасно работает! Даже атлассиан и прочие гитхабы не настолько удобны, как встроенные тулзы.
А ты просто злобненькая бака, добра тебе!


No.46281 Ответ [Открыть тред]
Файл: main-qimg-2a7cef12cc63002b267d248611c76e58.png
Png, 782.27 KB, 572×861 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
main-qimg-2a7cef12cc63002b267d248611c76e58.png
И мы продолжаем ликвидацию безграмотности, неспешные беседы и яростные дискуссии вокруг яваскрипта.

Предыдущий тред: >>40541
60 posts are omitted, из них 7 с файлами. Развернуть тред.
>> No.47106 Ответ
Файл: свое-уноси-с-собой.jpg
Jpg, 136.32 KB, 960×677
Ваши настройки цензуры запрещают этот файл.
r-18g
>>47096
Тот аутист скорее всего имел ввиду то, что в рельсах glue относительно готовый и стабильный, в отличие он жс инфраструктуры. С другой стороны ты конечно можешь туда интегрировать все это webpack-npm-grunt-петушение, и оно после пары матюгов тоже будет работать по командочке rake assets:precompile
>> No.47107 Ответ
>>46281
холодильник прикольны
>> No.47110 Ответ
Доброкодеры, выручите ньюфажину. Подскажите учебник по node.js, где всё разжёвывается более-менее понятно
>> No.47111 Ответ
>>47110
Node.js the Right Way - Jim R. Wilson
Интуиция говорит мне, что ты влез в нод без достаточно хорошего знания js и смежных вещей. Если это так, то надо сначала разобраться с js.
>> No.47112 Ответ
>>47111
Ну почему без достаточного. В js более-менее могу, а вот node почему-то никак не идёт
>> No.47113 Ответ
>>47112
> более-менее могу
Этого мало.
>> No.47114 Ответ
>>47113
Это я прекрасно понимаю. И, конечно же, буду учить и практиковаться дальше. Иных вариантов я не вижу
>> No.47115 Ответ
>>47111
А в чем именно там разбираться? В новых стандартах? ES6 и тд.
>> No.47116 Ответ
>>47115
Ну да, хитрый неожиданный синтаксис, возможно пара каких-то ещё технологий.
>> No.47261 Ответ
Файл: 2Uyim7.jpg
Jpg, 151.81 KB, 960×720 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
2Uyim7.jpg
>>47057
тайпскрипт/флоу
реакт
рамда/лодаш
ридукс
вебпак
ярн

по всему есть годная документация с самыми простыми примерами + экземпляры апсов

остальное излишество и необязательно учить, тот же преакт для хипстеров, которые скучают


No.42650 Ответ [Открыть тред]
Файл: hellodob.pas.png
Png, 17.52 KB, 646×428 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
hellodob.pas.png
В этом треде мы будем помогать новичкам с решением элементарных задач.
Говорить о том, что %названиеЯзыка1% лучше %названиеЯзыка2%, мы здесь не будем, для этого есть другие треды.
Предыдущий: >>28288
240 posts are omitted, из них 34 с файлами. Развернуть тред.
>> No.46978 Ответ
>>46969
И еще один. Неужели никто не знает, или всем как всегда?
>> No.46985 Ответ
>>46978
Анон, мне не "как всегда" (и что это за грязные намёки), но я просто никогда не занимался шифрованием. Если ты расскажешь, что тебе непонятно в имеющихся у тебя мануалах, возможно, найдётся тот доброкодер, который сможет тебе помочь.
>> No.47168 Ответ
Файл: 14247268961483.jpg
Jpg, 78.56 KB, 779×1280 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
14247268961483.jpg
Я не знаю, на чем пишутся аддоны к фаерфокс, но если кто-то знает, напишите для меня аддон/скрипт, который будет автоматически выставлять скорость видео на 1.5.
>> No.47194 Ответ
>>47168
Мне нравится идея. Только я предлагаю не 1.5, а 1.75. Или сразу 2 как компромиссный вариант.
>> No.47195 Ответ
Файл: 14246172910681.jpg
Jpg, 416.57 KB, 550×829 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
14246172910681.jpg
>>47194
Идеально было бы сделать, чтобы это было настраиваемо.
>> No.47209 Ответ
>>47168
И с какими сайтами этот аддон/скрипт должен уметь работать? С флешем думаю вряд ли что-то выйдет толковое
>> No.47210 Ответ
Есть костыль для регулировки тега video.
Флэш ты вряд ли зарегулируешь.
Уймитесь, велосипедисты.
>> No.47211 Ответ
Файл: БыстраБлять.jpg
Jpg, 8.40 KB, 480×360 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
БыстраБлять.jpg
Простых реквестов мне запилите!
>> No.47212 Ответ
>>47209
На тытубе, конечно. Забыл указать.
>> No.47214 Ответ
>>47209
>>47212
Твич и вконтактик.


No.30133 Ответ [Открыть тред]
Файл: Java8-Logo.jpg
Jpg, 49.61 KB, 321×340 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Java8-Logo.jpg
Начнем же тред околожабных технологий. Приветствуются дельные маны, пояснялки современных течений и анализ ситуации на будущее.
322 posts are omitted, из них 48 с файлами. Развернуть тред.
>> No.46735 Ответ
>>46734
Не выходит. Пишет, что "Cannot implicitly convert type 'long' to 'int'. An explicit conversion exists (are you missing a cast?)"
>> No.46736 Ответ
>> No.46737 Ответ
Файл: nopePNG.PNG
Png, 155.15 KB, 1274×210 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
nopePNG.PNG
>>46736
No. Видимо нельзя менять условия в строке метода.
>> No.46738 Ответ
>>46737
Наверно это задание неправильное, напиши создателям об этом.
>> No.46740 Ответ
>>46737
Или ты неправильно понял задание.
>> No.46966 Ответ
/r книгу или тутор по написанию приложений на типичной связке spring/hibernate. Я почитал их доки, но хочу ещё что-то попробовать типа "на примере".
>> No.47205 Ответ
>>46966
Нафиг книги. Давай вместе борду напишем. Или чятик. Это легко и никому не нужно, но код в гитхабе оооочень поможет в трудоустройстве. Плюс решение реальной комплексной задачи учит лучше всяких книг. Java core у меня отличный, с hibernate дело имею постоянно, есть несколько проектов на JavaFX, а вот со спрингом детально не ковырялся.
>> No.47206 Ответ
>>47205
У меня есть опыт в других языках, я просто хочу мигрировать.
>> No.47207 Ответ
>>46229
> С каждым днем я ненавижу JavaFX все больше. Когда я закончу со своим проектом у меня будет уже целая библиотека костылей.
Ты неправильно ее готовишь. Часть стандартных контроллов там - боль и страдание. Надо, как в андроиде, лепить своё на базе стандартного. Глянь вот сюда https://github.com/konachan700/JNekoUILib , доставит может быть.
А вообще оконный гуй на жаве не пишут, для него есть QT или шарп.
>> No.47208 Ответ
>>47207
Например JetBrains пишут, но это скорее всего исключение.


No.46971 Ответ [Открыть тред]
Файл: preds.gif
Gif, 21.70 KB, 577×647 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
preds.gif
Здесь будет мой дневничок, посвященный написанию сабжа с помощью рациональных чисел из библиотеки GNU MP/MPIR.

Тем кто хочет ознакомиться с темой добро пожаловать сюда:
https://habrahabr.ru/post/138168/
Или на видео этого же чувака:
https://www.youtube.com/watch?v=ndimHVTnUMA

Т.к. у меня уже почти атрофировались все навыки написания программ, то попутно я буду вспоминать си.
10 posts are omitted, из них 2 с файлами. Развернуть тред.
>> No.47017 Ответ
>>47015
Вроде что-то понял. Инпуты некорректны, но вычисления над ними не будут наращивать эту некорректность, так? Минус, полагаю, в производительности.
>> No.47022 Ответ
Теперь это будет тред 754 стандарта. Настало время его наконец-то прочитать.

Видео для интересующихся:
https://www.youtube.com/watch?v=K5Y4-4SKaSA
>> No.47025 Ответ
Интересная статья по теме:
https://habrahabr.ru/post/258483/

Стандарт читается очень тяжело. Т.к. написан казенным языком. Нужно крепко помолиться, чтобы продвинуться на новую страницу.
>> No.47027 Ответ
Отличная статья:
http://smalltalk.gnu.org/blog/bonzinip/floating-point-decimal-conversion-not-so-easy

Наконец-то стало понятно почему программы по печати float'ов могут напечатать разное для одного и того же числа.
>> No.47035 Ответ
Файл: nextafter.PNG
Png, 25.96 KB, 716×224 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
nextafter.PNG
Посоны, посоветуйте свободную библиотеку, где есть аналог этого:
http://www.digitalmars.com/rtl/math.html#nextafter
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxbd00/rnextf.htm
http://en.cppreference.com/w/c/numeric/math/nextafter
https://opensource.apple.com/source/Libm/Libm-47/ppc.subproj/nextafter.c

Чтобы работало для binary32 float (одинарной точности) под intel. В той версии студии, что у меня есть (и изменить ее я не могу) этой функции нет. И писать самому мне ее очень не хочется.
>> No.47036 Ответ
Офигеть. В Apple пишут в новой версии libm пишут код сразу в ассемблере:
https://opensource.apple.com/source/Libm/Libm-2026/Source/Intel/nextafterf.s.auto.html
>> No.47037 Ответ
Файл: printf.PNG
Png, 42.34 KB, 749×728 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
printf.PNG
Блин. Походу у майкрософт сломанный printf в части печати float. Он слишком рано округляет, хотя его этого делать не просили. Еще с этим теперь разбираться.
>> No.47038 Ответ
Файл: 17.PNG
Png, 15.60 KB, 778×146 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
17.PNG
>>47037
Так и есть.
> The VC++ CRT, regrettably, refuses to print floats or doubles with more than 17 digits of mantissa. 17 digits is enough to uniquely identify any float or double, but it is not enough to tell us precisely what value they contain.
>> No.47049 Ответ
>>47035
В glibc есть
>> No.47058 Ответ
>>47038
> Так и есть.
> The VC++ CRT, regrettably, refuses to print floats or doubles with more than 17 digits of mantissa. 17 digits is enough to uniquely identify any float or double, but it is not enough to tell us precisely what value they contain.
не вполне так.
хотя это вопрос, в некотором смысле, философский.
вкратце, нет оснований думать, будто float or double "содержит" некоторое конкретное значение сверх того, которое его однозначно идентифицирует.


[0] [1] [2] [3] [4] [5] ... [48] [49] [50]
Пароль:

[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]