timsa.ru

Моя записная книжка

GPS tracker (Deest D69 Pet locator)

Купил такую вот шнягу

Хотел кошку на даче отпустить гулять. А она весом с кирпич оказалась.

Тем не менее раз купил надо извлечь пользу. Поделие китайское, инфы почти никакой нет, на трекинг сайтах over9000 моделей трекеров поддерживается, а этого нет ни у кого. Родной сайт 102.gpsjm.com говно полное, приложение аналогично. Но, можно смской передать трекеру свой адрес и порт для логирования.
Протокол неизвестен, поэтому пока что написал на питоне прокси и смотрю что эта голова шлет на свой сайт.

update:
Долбанные китайцы сделали keep-alive соединение, которое шняга поднимает и держит открытым.
Если оно открыто сервак без предупреждения шлет команды, а шняга по расписанию кидает координаты. Если в помещении и координат нет то только заряд аккума.

18 сентября   купил   программирование

Интернет-магазин

Тестирую разные интернет магазины.

  1. wooCommerce (надстройка над WordPress).
    Неплохие темы из коробки, вменяемая админка.
    Импорт 500+ товаров невозможен вообще. Об обновлении данных речи вообще не идет т. к. схема хранения — ад и израиль. Через админку что либо сделать если товаров много также не представляется возможным.
    Резюме — полное говно, абсолютно не приспособлено для реальной работы.
  2. osCommerce
    Кривое косое поделие. Без копания в исходниках даже инсталляция не проходит (требует наличие mysql, хотя нормально работает через mysqli).
    Неадекватная админка вообще. При всей монструозности ничерта толком не настраивается, на каждый чих надо искать аддон, который с большой вероятностью будет кривым. В 2017 году нет ЧПУ!!!
    Резюме — нет смысла разбираться, будет ведро костылей.
  3. Magento
    Адов комбайн с лютыми системными требованиями. Требует 768мб оперативы! 18000 секунд на скрипты!
    Сам дистриб в сжатом виде 75мб, темы для него (без которых он кстати даже не запустится) еще 50-60мб! И это не картинки, а огромное количество отдельных маленьких файликов.
    Если честно, даже браться не хочется. Ведь если понадобится что-то править (а оно понадобится), это будет самоубийство.

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

Для чистоты эксперимента надо посмотреть битрикс и опенкарт.

Mysql hints

https://habrahabr.ru/post/105954/

Работа с бекапами

Делаем бекап
mysqldump -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql

Создаём структуру базы без данных
mysqldump —no-data — u USER -pPASSWORD DATABASE > /path/to/file/schema.sql

Если нужно сделать дамп только одной или нескольких таблиц
mysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > /path/to/file/dump_table.sql

Создаём бекап и сразу его архивируем
mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz

Создание бекапа с указанием его даты
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +/path/to/outputfile.sql.%Y%m%d.%H%M%S.gz`

Заливаем бекап в базу данных
mysql -u USER -pPASSWORD DATABASE < /path/to/dump.sql

Заливаем архив бекапа в базу
gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
или так
zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE

Создаём новую базу данных
mysqladmin -u USER -pPASSWORD create NEWDATABASE

Удобно использовать бекап с дополнительными опциями -Q -c -e, т. е.
mysqldump -Q -c -e -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql, где:
-Q оборачивает имена обратными кавычками
-c делает полную вставку, включая имена колонок
-e делает расширенную вставку. Итоговый файл получается меньше и делается он чуть быстрее

Для просмотра списка баз данных можно использовать команду:
mysqlshow -u USER -pPASSWORD

А так же можно посмотреть список таблиц базы:
mysqlshow -u USER -pPASSWORD DATABASE

Для таблиц InnoDB надо добавлять —single-transaction, это гарантирует целостность данных бекапа.
Для таблиц MyISAN это не актуально, ибо они не поддерживают транзакционность.

Общие факты

Полезно под каждую базу на боевом сервере создавать своего пользователя
Кодировка базы может быть любой, если она UTF8
В большинстве случаев лучше использовать движок InnoDB
В php лучше забыть про сильно устаревшее расширение mysql и по-возможности использовать pdo или mysqli
Новую копию MySQL всегда можно настроить и оптимизировать
Без особой нужды не стоит открывать MySQL наружу. Вместо этого можно сделать проброс портов
ssh -fNL LOCAL_PORT:localhost:3306 REMOTE_USER@REMOTE_HOST

Работа с данными

Числа

На 32-битных системах практически нет смысла ставить для типа INTEGER свойство UNSIGNED, так как такие большие числа в php не поддерживаются.
На 64-битных системах, php поддерживает большие числа, вплоть до MySQL BIGINT со знаком.
Связанные таблицы («Foreign keys») должны иметь полное сходство по структуре ключей. Т. е. если у нас на одной таблице для поля указано «INTEGER UNSIGNED DEFAULT 0 NOT NULL» то и на другой должно быть указано аналогично
Для хранения булевых значений, нужно использовать TINYINT(1)
А деньги лучше хранить в DECIMAL(10, 2), где первое число обозначает количество всех знаков, включая запятую, а второе — количество знаков после запятой. Итого, у нас получится что DECIMAL(10,2) может сохранить 9999999,99

Строки

В старых версиях (до 5.0.3) VARCHAR была ограничена 255 символами, но сейчас можно указывать до 65535 символов
Помните, что тип TEXT ограничен только 64 килобитами, поэтому что бы сохранять «Войну и Мир» пользуйтесь «LONGTEXT»
Самая правильная кодировка для вашей БД UTF8

Даты

Не забывайте, что
DATE, TIME, DATETIME — выводятся в виде строк, поэтому поиск и сравнение дат происходит через преобразование
TIMESTAMP — хранится в виде UNIX_TIMESTAMP, и можно указать автоматически обновлять колонку
Сравнивая типы данных DATETIME и TIMESTAMP, не забывайте делать преобразование типов, например:
SELECT * FROM table WHERE `datetime` = DATE(`timestamp`)

Перечисления

Для перечислений правильно использовать тип ENUM
Правильно пишется так: ENUM(’мама’, ’мыла’, ’раму’)
Можно ставить значение по-умолчанию, как и для любой строки
В базе поле с перечислением хранится как число, поэтому скорость работы — потрясающе высокая
Количество перечислений ~ 65 тысяч

dev.mysql.com/doc/refman/4.1/en/storage-requirements.html
help.scibit.com/mascon/masconMySQL_Field_Types.html

Отладка

Если запросы тормозят, то можно включить лог для медленных запросов в /etc/mysql/my.cnf
А потом оптимизировать запросы через EXPLAIN
И наблюдать за запросами удобно через программу mytop

11 августа   mysql

Идейка

Подумать как можно реализовать

Индикатор поворота колес

Рентабельность продаж

Компания закупает продукцию по 75 у.е. На доставку товара от поставщика до склада компании тратится 25 у.е. В сумме закупка товара и затраты на доставку составляют 100 у.е. Этих два компонента являются слагаемыми себестоимости. При текущем ценообразовании компания зарабатывает 30 у.е. валовой прибыли. Валовая прибыль в сумме с себестоимостью определяет продажную цену компании 130 у.е.

Теперь давайте посмотрим, какова торговая наценка на данную продукцию? Торговая наценка — это отношение валовой прибыли к себестоимости, то есть в нашем случае 30 у.е. валовой прибыли делятся на 100 у.е. себестоимости продукции. Таким образом мы понимаем, сколько мы наценили на себестоимость.

Дальше давайте перейдём к понятию маржи (она же валовая рентабельность продаж). Валовая рентабельность продаж в нашем случае — 23%. Как определяется рентабельность продаж? Валовая прибыль (30 у.е.) делится на продажную цену компании (130 у.е.). То есть маржа — это отношение валовой прибыли к продажной цене компании. Маржа показывает, сколько мы заработали грязной, валовой прибыли от суммы продажи.

Стоит сказать, что наценка обычно применяется при ценообразовании. То есть руководство либо финансовый отдел может сказать ответственному менеджеру за продукт (менеджеру по закупкам), какая должна быть наценка на продукцию. Наценка — это инструмент в ценообразовании. С помощью торговой наценки формируются продажные цены.

Но с другой стороны существует рентабельность, прибыльность продаж (маржа). Данный показатель обычно используется при анализе компании — при определении эффективности определённой группы товаров либо направления. Данный показатель, в большей степени, используется финансовым отделом. Именно финансовый отдел определяет тот уровень рентабельности продаж, который должен быть у компании оптимальным, чтобы компания могла в дальнейшем нормально развиваться.

Стоит сказать, что конечная цель отдела финансов — определить чистую прибыль компании. Финансисты знают более детальную разбивку затрат, которая включается в валовую прибыль. Как вы знаете, валовая прибыль состоит из чистой прибыли и операционных затрат, которые компания несёт на свою деятельность. Уровень операционных затрат определяется, как отношение суммы операционных затрат к сумме продаж компании за определённый период. То есть, допустим, мы знаем, что уровень операционных затрат компании составляет 15,4% от продажной цены компании — в нашем случае это 20 у.е. от 130 у.е. Таким образом компания понимает, что валовая прибыль по данной продукции будет включать в себя операционные затраты на уровне 20 у.е. Если же отнять от 30 у.е. валовой прибыли 20 у.е. операционных затрат, то компания получит чистую прибыль в размере 10 у.е. Если разделить 10 у.е. чистой прибыли на продажную цену компании 130 у.е., то мы получим, что чистая прибыльность продаж компании составит 7,6%. То есть, как вы понимаете, чистая прибыльность продаж — это отношение суммы чистой прибыли компании при определённой продаже продукции к цене продажи на эту продукцию.

На основе предложенной схемы видно, что формулы торговой наценки и маржи имеют следующий вид.

Формула торговой наценки:

% наценки = ( (П.Ц. — СЕБ.) / СЕБ. ) * 100

Формула маржи:

маржа (%) = ( (П.Ц. — СЕБ.) / П.Ц. ) * 100

где, П.Ц. — продажная цена компании в у.е.,

СЕБ. — себестоимость продукции в у.е.

Давайте подставим в предложенные формулы компоненты цены (схема 1):

% наценки = ((130 у.е. — 100 y.e.)/100y.e.)*100 = 30%
маржа (%) = ((130 y.e. — 100 y.e.)/130 y.e.)*100 = 23%

Рентабельность продаж — коэффициент рентабельности, который показывает долю прибыли в каждом заработанном рубле. Обычно рассчитывается как отношение чистой прибыли (прибыли после налогообложения) за определённый период к выраженному в денежных средствах объёму продаж за тот же период. Формула рентабельности:

Рентабельность продаж = Чистая прибыль / Выручка

В рассмотренном случае рентабельность = 10/130 = 7,7%

2017   бизнес

Раньше делали инженеры для людей, а теперь маркетологи для потребителей

Такую замечательную фразу я тут услышал от коллег, когда обсуждали метаморфозы, происходящие с техникой разных очень-очень солидных фирм. Делали, допустим, раньше в Германии хорошие автомобильные весы. Покупали их рукастые весовщики с Алтая, ставили в алтайскую землицу и работали эти весы по 20 лет без замечаний. В жару и мороз. А теперь весы эти заведомо нельзя ставить самому, ибо германский концерт предупреждает, что установку весов должны делать только их специально обученные специалисты. Они же будут весы мониторить и по надобности ремонтировать.
Да и просто с техникой происходят удивительные вещи. Она ломается! Причем глупо, быстро. Покупается приборина той же некогда железобетонно надежной германской фирмы, подключается — бах, пробой на корпус. Все в шоке — как это может быть. Германия же!? А вот может

Один из факторов, имхо, банальное отсутствие необходимости закладывать запас прочности. Вот пока они продавали свои приборины куда-то там в неведомую Сибирь раз и навсегда — запас прочности был. Ибо если чего не так — вернут целиком, попросят деньги назад и больше покупать не будут. А сейчас — есть представители, которые тут же приедут, посмотрят, наговорят с три короба.
Изделие не нужно предварительно испытывать до потери пульса. Само испытается — у потребителя. На то и мониторинг: «PLM вышел за границы заводов и конструкторских бюро и пришел к дилерам. Дилер, составляя отчеты о ремонтах и гарантийных случаях, отправляет их в систему PLM.
После чего инженеры на заводе могут оценивать, как их конструкция живет в реальном мире у конечного потребителя. Выясняют, в каких партиях возникают те или иные проблемы. И вот тут происходят уже явные подвижки в ухудшении качества продукции. Откровенно говоря, именно здесь качество и заканчивается. Теперь не завод проверяет продукт, а потребитель. Вместо ресурсных испытаний — реальная эксплуатация под присмотром дилера, но за собственный счет клиента. Зато получив PLM, инженеры сильно упростили для себя процесс разработки и исследования, переложив проверку получившегося результата на плечи покупателя. Это позволило очень серьезно сократить как сроки, так и средства на разработку изделия, не говоря уже о работе над ошибками в виде обязательного фейслифтинга или рестайлинга. Инженеры спокойно собирают данные обо всех неисправностях, анализируют и вносят изменения в конечную продукцию. Система, задуманная для повышения качества, стала ее убийцей.»

И в этой ситуации, действительно, «главным» становится маркетолог. Менеджер диктует инженеру какое СКО должно быть у его приборы. Инженер объясняет, что не получится такое СКО, ибо законы физики никто не отменял, а у менеджера есть волшебное — «Но у конкурентов — вот столько!» Инженер не знает как это у конкурента получилось, да и не может проверить — правда ли получилось. Ибо у конкурента теперь тоже инженер — не главный. Поэтому всякое может быть.
И инженер в лабораторных условиях при выпуске из производства дожимает приборину, чтобы казала искомые цифры. А в эксплуатации в Урюпинске ее сначала настраивает другой инженер, который кроет матом заводских и маркетологов, которые это все придумали; приборина в итоге как надо полностью все равно не работает, что инженер-дожиматель в принципе знает заранее. Потребителя просят никуда не лезть и сразу звать специалистов изготовителя — в том числе для того, чтобы потребитель, роясь в приборине, не нарыл чего не надо. Чего не надо изготовителю.
И вот так технологии развиваются, а техника не становится ни качественнее, ни дешевле, потому что всех этих сопроводителей-дожимателей же тоже нужно содержать. В итоге — раньше делали инженеры для людей, а теперь маркетологи для потребителей.

2017   сервис

2 полезных htaccess

#Запрещаем загрузку файлов с внешних сайтов
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/stop_stealing_bandwidth.gif[nc]

#Запрещаем комментарии от пользователей без Referrer
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

2017   сайты

Новые фильмы

Пассажиры 2016
Притяжение 2017
Джон Уик 2 2017
Обитель зла: Последняя глава 2016
Великая стена 2017
Конг: Остров черепа 2017
Последний охотник на ведьм
Капитан фантастик

Хорошая формулировка

Почему не стоит доверять ремонт случайным людям? Потому что результат будет тоже случайным.

2017   сервис
Ctrl + ↓ Ранее