danforth

danforth
Рейтинг
153
Регистрация
18.12.2015
suffix:
Но толку-то - 1к посетителей в сутки сколько лет бьюсь больше никак

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

VoV@, я чет сначала и не увидел, что вы про буковки писали. Даже если хулиган введет циферки в инпут, они все равно прилетят в виде строки. Мои примеры как раз и описывают это.

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

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

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

edogs:
По логике - '1'. На самом деле - 'b'.

Странная логика, почему 1? Если 'a' - по ASCII в десятичной системе это 97, проинкрементировав (для этого привести к числу), вы получите 98, и конвертнув обратно число в строку, вы получите 'b'. Не знаю как PHP работает с последовательностью сивмолов, но в нормальных языках примерно так и работает - строка это иммутабельный поток int32 чисел (для последнего стандарта utf8, где на один символ может уходить 4 байта).

---------- Добавлено 30.06.2018 в 11:55 ----------

VoV@:
Разве? В js это приведёт к NaN.

Откройте консольку и посмотрите:

var a = '10';

undefined
a++
10

var a = '10';

a = a + 1;
"101"

var a = '10';

undefined
a = a -1 + 2;
11
edogs:
Зря.
Вы потратили время - свое напрямую (занимаясь оптимизацией), чужое косвенно (на отслеживание коммитов), Вы не знаете к каким последствиям это может привести (т.к. не знаете причин почему это было написано именно так и как следствие к чему Ваши изменения могли привести), Вы не получили заметного эффекта (замена -1+2 на ++ это не фига не оптимизация).
Ваши действия не только не позитивны, они негативны.

С этим соглашусь. Если у нас colvo пришло в виде строки, то colvo++ в первой итерации приведет сначала к числу и инкремента не произойдет. Если сделать colvo = colvo + 1; Мы можем получить конкатенацию. И только colvo = colvo - 1 + 2 сначала кастанет к числу, а затем инкрементирует изначальный счетчик. Но это песня про убогий дизайн JS.

A007MP:
Нет. Во-первых, полное отделение разметки от кода позволяет настолько абстрагироваться, что вся программа пишется с ходу, вообще не задумываясь, что, где и как должно отображаться. Во-вторых, сразу знаешь, в каких файлах что искать и менять, при смене дизайна.
Единственное, что я оставил (да и то - временно) пока в php - это ответ на ajax запрос - в файлах есть текстовые сообщения, которые выводятся пользователю. Но и это, на самом деле, делать нежелательно - все должно идти из базы. Таким образом проще будет сделать мультиязычную систему. А вот ответ на ajax запрос в виде части html (например для корзины) - тоже берется разметка из шаблона. Это позволяет менять дизайн только в одном месте, а не выискивать кучу мест, где это могло быть.

А ещё круче - использовать Clean Architecture подход, в котором приложение разделяется на 4 слоя:

Entities - бизнеслогика: сущности, методы и функции

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

Interface Adapters - абстракции для доступа взаимодействия с внешним миром (MVC, MVVM или что-то другое)

Frameworks & Drivers - библиотеки внешнего мира, тут настраивается слой между адаптерами и библиотеками.

При таком подходе, любое изменение слоя затрагивает только один слой, и не более. Поменялась логика взаимодействия - сменили use cases, нашли роутер по производительнее , заменили frameworks & drivers.

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

Dmitriy_2014:
А насчет что-то предложить пользователям взамен, но ведь тот же хабр, пикабу и другие что они предлагают пользователям? Кроме того что это типо круто и почетно?

А вы сами не пробовали себе ответить на этот вопрос?

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

Почитайте книжку "Заразительный. Психология сарафанного радио. Как продукты и идеи становятся популярными". Там как раз о том, что делает проекты успешными.

Мой ответ такой: сейчас аудитория разбалована, почти все ниши заняты, и вероятность сделать успешный сайт используя шаблонные решения практически нулевая. Подход должен быть не просто качественный, а нереально качественный. Если речь идет о контенте: нужны не (боже упаси) рерайтеры, и даже не копирайтеры. Нужны люди, которые крайне квалицифированны в вопросе, которые совместно с копирайтером создадут контент, и расскажут о том, чего не знает практически никто. Все кроется в деталях. Некоторые люди это замечают (и оценивают по достоинству), некоторые не замечают, но на подсознательном уровне чуствуют. Есть и те, кому плевать, они обычно читают рерайт пережеванный всем рунетом, сидят на сайтах android-igri-programmi-ska4at.com и хавают все эти баннеры как увеличить pencil до 80 см.

Dmitriy_2014:
современный сайт
Dmitriy_2014:
WordPress
Dmitriy_2014:
куча плагинов

VSCode + примонтированная папка в файловом менеджере.

Да, оно всегда так делает. Я как-то doc в html конвертировал, там тоже мешанина. В итоге, пришлось парсить итоговый HTML и вырезать у тегов атрибуты, а также делать unwrap для тегов span. В итоге, оставались только одни теги p.

Ну а распарсить pdf в HTML с какой-либо вменяемой версткой вряд ли возможно. Где-то видел видео нейронной сети которая верстает с макетов.

Можно попробовать LibreOffice + unoconv, но у меня сейчас на небольшом наборе на зашло. Хотя вот делаю задание, и гоняю презентации в pdf без особых проблем.

Делал так:


#!/bin/bash

for f in *.pdf
do
$(unoconv -f html $f)
done;
Aisamiery:
PS. Кстати 2 виртуалки (1Гб, 1Ядро) в кластере (паре) дадут производительность выше чем одна с 2 гигами и 2 ядрами

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

Если речь идет про кластер с изоморфными нодами, где в каждой ноде у вас и база и приложение, тогда, во-первых, вам нужно ставить балансировщик, что уже как бы не равноценное сравнение, и шарить сессии, или же обеспечить доступ в рамках одной сессии только к одной ноде. Во-вторых, базу нужно реплицировать, это тоже требует ресурсов. На ноде с 2+ ядрами задачи которые могут тредится, будут тредится. На ноде с 1 ядром, задачи будут выполнятся конкурентно (а не параллельно) + context switch шедулера.

Как правило, кластер начинает выигрывать на 2-х нодах только в том случае, если ноды по мощности не равнозначные. И выигрывает не столько по скорости, сколько по reliability.

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

Aisamiery:
Ну и нагрузка не линейна, в плане если 10 пользователей делают нагрузку N, то утверждение неверно что 20 пользователей делают нагрузку N*2

Точно также, как и утверждение что O(n) всегда равно O(n) спустя какое-то время.

Aisamiery:
Вам надо понять, что обычный mysql и apache это однопоточные приложения и блокировка одного потока приводит к блокировки мастер потока и соответственно блокировке всех, так что хоть 50 ядер поставьте это не поможет.

Вам надо понять, что MySQL и Apache - это далеко не однопоточные приложения. У MySQL есть пулл-коннектов, каждый запрос обрабатывает оптимизатор на основании накопленной статистики таблицы, и передает выполнение конкретному движку таблиц (например, InnoDB). Более того, многие это слышал впервые, но InnoDB - это KV storage, в нем есть первичные ключи, и хеш индексы, которые работает на часто запрашиваемых первичных ключах у таблиц. И все это... многопоточно!

Всего: 1540