Ычан: [d | b / bro / hr / l / m / med / mi / mu / o / ph / r / s / sci / tran / tu / tv / x | es / vg | au / tr | a / aa / abe / c / fi / jp / rm / tan / to / vn / vo]
[Назад] [Вся нить] [Последние 50 сообщений]
Ответ в нить
Имя
Animapcha image [@] [?]
Тема   ( ответ в 23830)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, XCF, ZIP размером до 5000 кБ.
  • Ныне 3191 unique user posts. Посмотреть каталог
  • Максимальное количество бампов нити: 500
157894316857.png-(578.70KB, 720×720, junior_developer_aoba.png)
23830
No. 23830    
Здесь можно получить помощь и консультацию по любому языку программирования, в любой сфере разработки. Не важно, программируете ли вы собственного робота, пишете серверную приблуду, интегрируете чужие API, ковыряете игру, или пытаетесь сделать сайт на Wordpress - если аноним что-то об этом знает, он обязательно поможет.

Пополняемая база знаний: http://pastebin.com/AGhLZppH

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

Другие тематические нити (периодически обновляется): https://pastebin.com/psy43ibG

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

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

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

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

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

Прошлая нить пока тонет тут: >>/dev/21641
Развернуть все изображения
No. 23831    
>>23830
В процессе систематизация прошлой нити для пополнения базы знаний.
No. 23833    
С настройкой апача с mod_rewrite сюда или нет? Буду считать, что сюда:
RewriteCond %{HTTP_USER_AGENT} MJ12bot

RewriteRule . - [F,L]
(и еще десяток правил для разных ботов)
Может кто-нибудь объяснить, почему оно работает на уровне .htaccess, но не работает, когда я пробую прописать это на уровне <Directory> внутри виртуалхоста?
И до кучи — можно как-нибудь сделать, чтобы эта нечисть, заодно, не мусорила в лог? (Или это плохая идея?)
No. 23834    
>>23833
>Может кто-нибудь объяснить, почему оно работает на уровне .htaccess, но не работает, когда я пробую прописать это на уровне <Directory> внутри виртуалхоста?

Должно работать и там, и там, но:
>Note that rewrite configurations are not inherited by virtual hosts. This means that you need to have a RewriteEngine on directive for each virtual host in which you wish to use rewrite rules.

Ты же не забыл там написать RewriteEngine On?
Можешь показать примерно, как выглядит твой <Directory>?
No. 23835    
>>23831
Пока из прошлой нити собралось вот такое:

>Хочу понять как git делает свой .gitignore
>>/dev/22204

>Хочу передавать бинарные данные через вебсокеты
>>/dev/22371

>Что лучше для начинающего, Ruby или Python?
>>/dev/22386
>>/dev/22387

>Хочу реализовать кастомные счетчики для постов в Wordpress
>>/dev/22448
>>/dev/22451

>Хочу сделать toggle-меню по клику средствами CSS
>>/dev/22467

>Как правильно разделять логику модели и логику контроллера?
>>/dev/22481
>>/dev/22487
>>/dev/22488

>Хочу хешировать пароли
>>/dev/22492

>Зачем в C++ имена классов начинать с _ ?
>>/dev/22520
>>/dev/22521

>Хочу разместить изображение поверх градиента средствами CSS
>>/dev/23006

>Хочу онлайн Matlab без регистрации и смс
>>/dev/23170

>Где узнать, поддерживает ли Node.js конкретную фичу JS?
>>/dev/23470

>Поясните про специализацию шаблонов в C++
>>/dev/23616

>Вылетает android-приложение при попытке открыть ScrollView
>>/dev/23717
>>/dev/23721

>Хочу Jupyter в облаке
>>/dev/23822
No. 23836    
>>23834
>RewriteEngine On?
Написал, разумеется.

>Можешь показать примерно, как выглядит твой <Directory>?
Да, собственно, стандартно выглядит. Я пробовал разные варианты, от <Directory /srw/www/> (это даже попытался впихнуть прямо в apache2.conf — тоже никакого эффекта), до <Directory /srw/www/user/html/site/> (что, вроде, эквивалентно указанию .htaccess, но всё равно не работает). Никакого эффекта ни на одном уровне нет. Внутри иногда был только этот список, иногда — еще директивы вроде AllowOverride All и т.д., которые, по идее, влиять не должны.

Ну и еще, там далее по тексту конфига была <Directory /srw/www/user/html/site/subfolder/>, в которой свои правила для mod_rewrite (со своим RewriteEngine On). Не могут они конфликтовать? Не должны ведь вроде, по крайней мере за пределами той папки…
No. 23837    
>>23836
>srw
srv то есть
И нет, в конфиге этой опечатки нет, сейчас специально проверил
No. 23839    
>>23836
>>23837

Вот тут расписано про наследование.
https://stackoverflow.com/a/34614298
Там где
>WARNING: mod_rewrite inheritance
Вроде описана прямо твоя ситуация.

>If you are switching between testing .htaccess and <Directory> containers in your server config and wondering why the directives in the <Directory> container aren't doing anything then it's possible that the mod_rewrite directives in .htaccess are completely overriding the directives in the <Directory> container. This is the default behaviour. .htaccess directives will take priority and parent directives are not inherited by default.

И решение:

>Generally, if you are using <Directory> containers in the server config then you don't need .htaccess, so the easiest option is to simply disable them in your <Directory> container with AllowOverride None

Скажи, поможет оно, или нет.

>Ну и еще, там далее по тексту конфига была <Directory /srw/www/user/html/site/subfolder/>, в которой свои правила для mod_rewrite (со своим RewriteEngine On). Не могут они конфликтовать?
Тут быстрее всего отключить и проверить, поменялось ли что.
No. 23844    
Ещё интересные сервисы без регистраций.
https://codesandbox.io — аналог jsfiddle для веб-разработки, но вроде гораздо более фичастый. Сборки бундлером, коллекция быстрых шаблонов, npm модули, fullscreen preview на отдельном поддомене.

https://repl.it — много языков. Выделяют поддомены.
https://docs.repl.it/repls/web-hosting
https://docs.repl.it/repls/http-servers

https://runkit.com/home — тоже что-то вроде repl/notebook, но только для nodejs. Из фич: мгновенный импорт любого npm-пакета, визуализация возвращаемых данных, и такое
> Create an API without worrying about servers or configuration. Just export a endpoint function and your notebook automatically becomes an HTTPS endpoint, accessible from any app.

https://book.klipse.tech — встраиваемые (embed) repl для своих веб-страниц для нескольких языков.
No. 23845    
Освоил верстку и замкнулся

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

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

Главная цель была зарабатывать хотя бы тысяч 5 в месяц с фриланса.. Но как побывал там, понял, что верстать все умеют, и нужно cms изучать..

Пытаюсь читать js по Кантору, получается нормально.
Но дело в том, что это очень нудно и мозг не позволяет заниматься этим делом даже 1 час без перерывов.
А некоторые занимаются этим по 6+ часов? или они просто шутят..

Пытаюсь изучать CMS системы, (wp, opencart) - идет легко, но не верится что там происходит всё путем готовых решений и что я смогу выполнить какой-то заказ с моими знаниями(да нужно практиковаться..)

Как можно вкатиться в фриланс если навыки есть, но заявку грамотно составить не можешь?
Выходит заказ с типичным названием "Создать интернет магазин" с очень маленьким и кратким описанием, на которое невозможно ответить в стиле:
post: задача заказчика
reply: интерес к его задаче и несколько предложений решения его задачи
как я должен красиво ответить, чтобы меня выбрали из 50 кабанчиков?
Да нужны отзывы чтобы тебе доверяли, но легких заказов за отзыв пока не видел..

Я хотел выполнять заказы на фрилансе(не получается) попутно изучая js.
Но все мои планы рухнули, на чем стоит сфокусироваться?
Подскажите пожалуйста
No. 23846    
>>23845
Вот-вот, у меня такой же вопрос.
No. 23847    
>>23846
Привет, конкурент
No. 23848    
>>23845 Портфолио сделай, как вариант. А на каких ты биржах (или где еще) пытаешься брать заказы
No. 23849    
>>23848
На рунет биржах
Портфолио есть, но в нем 2 работы
Заказчик которому нужен хороший исполнитель "с опытом работы" в основном не на портфолио смотрит, а на отзывы + портфолио у меня есть
Вообще зря я разнылся.. нужно искать легенькие заказ и пытаться работать пока за отзывы
No. 23850    
157926180823.webm-(65.08KB, 640×360, Maybe you should try getting a job_-afkN9H9aLow.webm)
23850
>>23845
No. 23851    
>>23845
Вёрстка это только начало. Дальше либо бекенд, либо фронтенд.
No. 23852    
>>23851
Да я понял, я же расписал все, вы не прочли?
>Я хотел выполнять заказы на фрилансе(не получается) попутно изучая js.
Но все мои планы рухнули, на чем стоит сфокусироваться?
No. 23853    
>>23852
>на чем стоит сфокусироваться?
Ну раз начал js учить, то продолжай. Всё равно он почти везде нужен.
Вёрстка + js + фреймворки = фронтенд.

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

Алсо, не рекомендую вылизывать заказчиков - фриланс это сотрудничество, а не прислуживание. По своему небольшому опыту советую.
No. 23857    
>>23851
А по бэкенду вообще много спроса на фрилансеров? Если да, то советую вкатываться в него: по моему опыту, люди от фронтенда довольно быстро выгорают из-за обилия и частоты смены фреймворков. Сам когда-то проработал два года фуллстеком и в итоге перекатился в бэкенд, лишь бы больше фронт не видеть.
No. 23858    
>>23857
>по бэкенду вообще много спроса на фрилансеров?
Точно не смогу сказать - не хочу уподобляться мартышкам, которые не в курсе дел на другом фронте разработки и делают неправильные выводы в стиле "да %технологию\язык нейм% уже никто не использует 100 лет".
Скорее всего, у всех есть заказы и двигай туда не где больше денег, а где конкретно тебе интереснее.

>люди от фронтенда довольно быстро выгорают из-за обилия и частоты смены фреймворков
Фронтенд это сейчас хайп и туда лезет очень много посторонних людей, которые естественно выгорают, просто потому, что не задроты.
Да и где там обилие фреймворков? Самые на слуху - React, Vue да Ангуляр, а Node.js это таки уже бекенд.
Это много что ли? Выучи один-два и работай на нём.
No. 23859    
>>23858
Ну, у меня когда-то знатно подгорело от чуть ли не ежемесячных изменений: переезд на бауэр, с него на галп, потом с первого ангуляра на второй, потом с js на coffee script. А проект при этом еле двигался.
Не думаю, что разработка не мое, в бэкенде я себя чувствую довольно хорошо. Возможно, что просто к фронтенду нужно отдельную предрасположенность иметь.
No. 23860    
>>23859
Ну у тебя тут только один фреймворк по факту. Кофе скрипт это диалект js, галп это просто библиотека, как и бовер. Такого везде много.

>в бэкенде я себя чувствую довольно хорошо
На чём пишешь?
No. 23862    
>>23860
Java / C++
Сложно объяснить. Меня смущает ментальность, когда люди стремятся впихнуть в проект новую технологию, не доделав задачу, которая нужна бизнесу.
No. 23863    
>>23860
Сразу дополню, что сталкивался с таким в основном фронтенде (и до сих пор сталкиваюсь, когда пересекаюсь по работе). Отсюда и отторжение.
No. 23864    
>>23860
>по факту
По факту есть множество модных способов сделать одно и то же. И каждые полгода мода меняется.
No. 23866    
Чиочан, выручай.
Есть бинарное дерево, просто из указателей, без данных.
struct TreeNode {
struct TreeNode leftChild;
struct TreeNode
rightChild;
}
Надо найти в нем самый длинный путь от корня к листу и вернуть его. Причем таких путей может быть несколько, вернуть надо все.
Как к этому приступиться - вообще непонятно.
No. 23868    
>>23866
Ключевые слова: обход дерева.
Конкретно в твоём случае, для решения в лоб, проще всего будет рекурсивно найти самые длинные пути из левого и правого поддеревьев и прибавить их к текущему узлу.
Если не справишься, пиши, распишу псевдокодом.
No. 23869    
>>23868
>прибавить их к текущему пути
Ещё не проснулся, поправил.
No. 23870    
>>23853
>Пытаюсь читать js по Кантору, получается нормально.
Но дело в том, что это очень нудно и мозг не позволяет заниматься этим делом даже 1 час без перерывов.
А некоторые занимаются этим по 6+ часов? или они просто шутят..

Что посоветуете по этому поводу?
No. 23871    
>>23870
Заниматься с перерывами. Ну или непросто читать, а предложенные примеры решать - очень хорошо разбавляет обучение.
Я так и делал.
No. 23872    
>>23870
>или они просто шутят
Не шутят.
No. 23874    
Еще такой вопрос аноны
Читаю Кантора и прям вообще некоторые моменты запомнить не могу
В новых темах упоминаются моменты которые я не смог запомнить и идет уже полное непонимание
Поможет ли тут метод конспектирования в тетрадь?
No. 23875    
>>23870

Какие уж тут шутки, тут как раз именно такое дело где просто необходимо позадротствовать. Эффект от кантора гарантирован
No. 23876    
>>23874
Поможет, конечно
No. 23877    
>>23868
Распиши, пожалуйста.
No. 23879    
>>23874
>Поможет ли тут метод конспектирования в тетрадь?
Выпиши определения и повторяй пару дней подряд - должно запомнится.
No. 23884    
В общем, с путями в дереве у меня самого так ничего не получилось.
Создал сбалансированное дерево поиска, напечатал. Как найти все пути с максимальной глубиной (да и вообще все пути) - никак не соображу.

Идеоне что-то чудит, поэтому код прямо сюда выложу

void tree_longest_paths() {

int n;
std::cout << "Enter number of nodes (no more that 100): ";
std::cin >> n;
std::cout << std::endl;

if (n < 0 ) {
n = abs(n);
}

if (n > 100 ){
n = 100;
}

int arr = new int[n];

for (size_t i = 0; i < n; i++) {
arr[i] = i;
}

TreeNodeMod
head = CreateBalancedTree(arr, 0, n-1);

PrintTreeTraversal(head);
std::cout << std::endl;
PrintTreeByLevel(head);

}

size_t TreeHeight(TreeNodeMod node) {

if (node == nullptr) {
return 0;
}
else
{
int lheight = TreeHeight(node->leftChild);
int rheight = TreeHeight(node->rightChild);

if (lheight > rheight)
return(lheight + 1);
else
return(rheight + 1);
}

}

TreeNodeMod
MakeNode(int x) {
TreeNodeMod n = new TreeNodeMod;
n->data = x;
n->leftChild = nullptr;
n->rightChild = nullptr;
return n;
}

TreeNodeMod
CreateBalancedTree(int arr[], int start, int end) {

if (arr == nullptr) {
return nullptr;
}

if (end < start) {
return nullptr;
}

int mid = (start + end) / 2;

TreeNodeMod n = MakeNode(arr[mid]);

n->leftChild = CreateBalancedTree(arr, start, mid - 1);
n->rightChild = CreateBalancedTree(arr, mid + 1, end);

return n;
}

void PrintTreeTraversal(TreeNodeMod
n) {

if (n == nullptr) {
return;
}

PrintTreeTraversal(n->leftChild);
std::cout << n->data << " ";
PrintTreeTraversal(n->rightChild);

}

void PrintTreeByLevel(TreeNodeMod n) {

int h = TreeHeight(n);

auto prnt = [](auto&& self, TreeNodeMod
n, int lvl){
if (n == nullptr) {
return;
}
if (lvl == 1) {
std::cout << n->data << " ";
}
else {
if (lvl > 1) {
self(self, n->leftChild, lvl-1);
self(self, n->rightChild, lvl-1);
}
}
};

for (int i = 1; i < h+1; i++) {
prnt(prnt, n, i);
std::cout << std::endl;
}

}
No. 23885    
>>23884
Читать не буду, извини, как-то ты всё усложняешь.
У тебя рекурсивно заданная структура данных, соответственно, работать с ней проще всего рекурсивно: и для просто обхода, и для подсчета путей, итд.
Вот, посмотри: https://pastebin.com/y0V2Zbwm
Пишу с микроволновки, поэтому возможно оно не компилируется и требует доработки напильником.
No. 23886    
>>23839
>Скажи, поможет оно, или нет.
(Долго тормозил, но, на случай, если это кому-то еще может понадобится, всё же отвечу): Помогло добавление в корневой .htassecc директивы
RewriteOptions InheritBefore
Этого хватило, чтобы всё, что установлено в конфигах апача, стало наследоваться.

Кроме того, приятная новость: большинство этих ботов таки слушаются robots.txt. Так что включение их и в него тоже сильно уменьшило размер логов. Только, разумеется, нужно его разрешение прописать в mod_revrite до всего этого черного списка.
No. 23887    
Эх аноны..
2 дня подряд человек с 10 отзывами забирает 2 раза подряд легких заказа на 50$ по верстке, как же у меня припекает и плакать хочется одновременно
No. 23888    
>>23887

Иди в бэкэнд, там софтскилз всё таки поменьше нужны, раз такие проблемы возникают.
No. 23889    
>>23887
Надо с заказчиком уметь работать.

>>23888
А на бэкенде они к тебе с поклоном приходить чтоле будут? Та же история как и везде.
No. 23890    
>>23887
У меня один перец увёл заказ на 200$ пока я дуплился.
Всех денег не заработаешь.
No. 23891    
>>23889

Поменьше, всё таки. Специфика такова, что требует некоторой квалификации, даже если ты просто вордпресс разворачиваешь.
No. 23892    
>>23886
Спасибо что отписал, добавлю в базу знаний.
No. 23893    
Господа фрилансеры, именно те, что начинающие, а что вас толкает на работу во фрилансе? Почему не удалёнка / работа в офисе?
No. 23894    
>>23891
Для вордпресса вообще никакой квалификации не надо - там всё мышкой кликается и это не бэкенд совсем.
Алсо как ты без софтскиллзов будешь заказ обсуждать? Как раз тут именно фронтенд легче - чёткие визуальные правки, без возни с бизнес-логикой и невнятными хотелками в которые ещё въехать надо. Поэтому на фронт все и валят.

>>23893
Я и не собирался только фрилансом кормиться. Сейчас активно подыскиваю офис - мне опыт нужен нормальный, а на фрилансе с этим опытом беда - там только наработанный использовать если.
А так - просто попробовал.
No. 23895    
>>23894
Вот я как раз хотел начинающим посоветовать не ходить во фриланс.
Нормальную культуру работы и софт скиллы (а они, внезапно, чуть ли не самое важное), можно прокачать только работая в команде. Причём лучше всего физически, а не на удаленке. Технические скиллы так тоже гораздо быстрее вырастут.
No. 23896    
>>23894

Я слишком коротко ответил, отсюда и недопонимание.
С заказчиком надо уметь работать разумеется, но могу сказать что при должной квалификации как-то это проще, чисто субъективно. А то что хайп на фронт, ну да, сражаются потом между собой свежеиспеченные реакт программисты в алом от их крови океане рунет бирж.
Сиэмэска то сама может и не бэк, но все что сложнее визитки уже требует его в том или ином виде, ну и посадки её соответственно. Как то так.
No. 23897    
>>23894
>Для вордпресса вообще никакой квалификации не надо - там всё мышкой кликается
Не всё, если без плагинов всё это дело организовывать, то писать таки нужно.
>Алсо как ты без софтскиллзов будешь заказ обсуждать?
Наставника бы найти, только где?
>>23893
>Господа фрилансеры, именно те, что начинающие, а что вас толкает на работу во фрилансе? Почему не удалёнка / работа в офисе?
А у меня в городе нетути никаких офисов, а для удалёнки, я подозреваю, документы всё равно нужно ехать офрмлять за тыщщу километров.
No. 23898    
>>23897
Подписанный договор можно заказным письмом отправить же. Зачем ехать?
No. 23899    
>>23893 Разные всякие бывают жизненные ситуации и конкретные обстоятельства, так то да конечно офис/удаленка лучше для по всем параметрам.
No. 23900    
>>23893

//Для развития по всем параметрам
No. 23902    
>>23885
Подумал и сам решил, вот так получилось

std::vector<std::vector<int>> FindPaths(TreeNodeMod node) {

std::vector<std::vector<int>> paths;
size_t h = TreeHeight(node);
std::vector<int> cur_path;
cur_path.reserve(h);

FindPathHelper(node, paths, cur_path, h);

return paths;
}

void FindPathHelper(TreeNodeMod
node, std::vector<std::vector<int>> & paths, std::vector<int> cur_path, size_t path_len_max) {

// Если узел пуст, то ничего не делать
if (node == nullptr) {
return;
}

// Добавить текущий узел в путь
cur_path.push_back(node->data);

// Если узел - лист, то проверить длину пути и запомнить путь, если он максимальной длины
if (node->rightChild == nullptr && node->leftChild == nullptr) {

if (cur_path.size() == path_len_max) {
paths.push_back(cur_path);
}

}
else {
// Если узел не лист, то рекурсивно обойти левое и правое поддерево
FindPathHelper(node->leftChild, paths, cur_path, path_len_max);
FindPathHelper(node->rightChild, paths, cur_path, path_len_max);

}

}
No. 23907    
Аноны, подскажите как работает данная функция
Я инстинктивно понимаю что она делает(принимает массив объектов со свойством age и сортирует их по нему), но логически не могу понять эту стрелочную функцию
как .sort располагает элементы после этой функции в правильном порядке(понятно что функция отсортировала всё, но не понятно как она работает..)?

function sortByAge(arr) {
arr.sort((a, b) => a.age > b.age ? 1 : -1);
}

let vasya = { name: "Вася", age: 25 };
let petya = { name: "Петя", age: 30 };
let masha = { name: "Маша", age: 28 };

let arr = [ vasya, petya, masha ];

sortByAge(arr);

// теперь отсортировано: [vasya, masha, petya]
alert(arr[0].name); // Вася
alert(arr[1].name); // Маша
alert(arr[2].name); // Петя
No. 23908    
15795183697.jpg-(361.44KB, 688×1000, Cinnabar_(Houseki_no_Kuni)_full_2270927.jpg)
23908
>>23907

function sortByAge(arr) { 
   arr.sort ((a, b) => a.age > b.age ? 1 : -1); 
}

семантически эквивалентно

function sortByAge(arr) { 
   arr.sort (function (a, b) {
      return (a.age > b.age ? 1 : -1);
   }); 
}

Замечу, что с такой операцией сравнения сортировка получается нестабильной.
No. 23909    
>>23907
Скорее всего, sort использует сортировку Хоара. Для сортировки последовательности достаточно знать, больше ли a, чем b. Характеристику чего по сути и возвращает передаваемая в sort фукция. Функция sort не располагает элементы после этой стрелочной функции-сравнителя compare, а использует её для сортировки, полагая, что a > b равносильно compare(a, b) > 0, a = b равносильно compare(a, b) = 0, a < b равносильно compare(a, b) < 0.

Например, для целых чисел compare(a, b) можно задать как дельту a - b, которой достаточно для определения того, находятся ли a и b в отношении >, <, =.
No. 23910    
>>23907
Можешь почитать тут объяснение
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
No. 23911    
Как решать проблему обобщенной или специфической реализации?
Постоянно возникает желание написать более общий код, который бы теоретически мог работать и с тем, и с этим, когда надо решить на самом деле одну конкретную задачу в конкретных условиях.
No. 23912    
>>23911
Само по себе то что ты делаешь не плохо, пишешь сразу с прицелом на расширение, что помогает избежать боли в будущем. Главное не делать это всё во вред, правило правой руки тут такое:

1. Сделать более широкое решение займет в 3 раза больше времени, чем более узкое?

2. Сделать более широкое решение значит сделать структуру классов в 3 раза сложнее для понимания, чем при более узком решении?

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

https://en.wikipedia.org/wiki/KISS_principle

Естественно, это всё не применимо к компонентам, которые изначально пишутся, чтобы их потом расширяли (всякие общие стратегии, и т.д)
No. 23914    
>>23909
Спасиб, именно из-за сортировки Хоара затупил
No. 23915    
Осспаде, как же у меня припекает от баз данных.
Даже не от самих баз, а от вывода ошибок. Почему они их выводят в наиболее нечитаемом виде? Почему не написать прямо - ошибка в такой-то строке(sql-строка) - в таком-то слове.
Зачем писать что-то вроде:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
bla-bla
.
bla-bla
, CONSTRAINT
bla-bla-bla-bla-bla-bla
FOREIGN KEY (
bla-bla
) REFERENCES
bla-bla
(
bla-bla
))
Сам текст максимально размыт - никакой конкретики. Весь гугл забит поиском по этим ошибкам и народ раздаёт советы один другого костыльней.

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

Вот всегда с этого стул горит. Когда этот бред закончится вообще?
No. 23916    
>>23915
Понимаю боль, но помочь поменять вывод ошибок от СУБД мы не можем. А для простого обсуждения этой несправедливости лучше использовать диспутов нить >>/dev/21353
No. 23917    
>>23915
Целиком и полностью зависит от субд.

>>23916
Хватит мусорить в треде.
No. 23921    
Насколько безопасно использование $_SERVER["SERVER_NAME"]? Скажем, для установки кук?

Мне попадались сообщения, что его якобы бы можно подменить, если в запросе будет один адрес, а в заголовке host — другой. Однако, сколько я не пытался такое слать — запрос всегда приходил на тот сайт, который указан в host. И на значение SERVER_NAME это никак не влияло.

Так возможна ли подмена? Или это что-то очень древнее и в современных серверах эта уязвимость давно закрыта?
No. 23923    
>>23921
Подмена возможна, самый простой пример:

1. делаешь файл override_test.php со следующим содержимым (при заходе тебе будет показывать содержимое HTTP_HOST:

<?php 

var_dump($_SERVER['HTTP_HOST']);

?>


2. используешь cURL чтобы сделать к нему запрос следующего вида:


curl -H "Host: 410chan.org" http://www.website.com/override_test.php


И вуаля - ты видишь 410й вместо своего HTTP_POST
No. 23924    
>>23923
>curl -H "Host: 410chan.org" http://www.website.com/override_test.php
>И вуаля - ты видишь 410й вместо своего HTTP_POST
…И я вместо своего www.website.com стучусь на 410chan.org и получаю закономерное 404. Во всяком случае, с теми хостам, с которыми я это делал, у меня результат был именно таким.
No. 23925    
>>23924
Значит зависит от неких условий, я перепроверил перед тем как написать, если что: у меня на двух хостах все отработало
No. 23926    
>>23921
>запрос всегда приходил на тот сайт, который указан в host
С чего бы ему так делать, DNS и IP не читают HTTP-заголовки.
Удалить сообщение []
Пароль  
[Mod]