Pull to refresh
39
Karma
0
Rating
Nikita @FallDi

Backend developer / Highload expert

  • Followers 14
  • Following 12

Быть тимлидом, ч.1: Люди

вот тогда придётся искать нематериальные методы мотивации.
К ним могут относиться: автономность, признание, похвала, амбициозные цели, стабильность, чувство общности, новые знания и навыки, сильная команда.


На мой взгляд, это одна из самых сложных частей :) Я бы разделил блок на 2:
1) автономность, амбициозные цели, стабильность, чувство общности, новые знания и навыки, сильная команда
2) признание, похвала

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

Будет ли сотрудник делиться желаниями/целями из второго пункта? Скорее всего, нет. Какой смысл просить похвалы, ради похвалы? Человек хочет её заработать, например, отлично работает, делает больше и качественнее. Тем самым подсознательно или бессознательно намекая.

Откуда берется заголовок Content-Type: nginx + php-fpm

Посмотрел из интереса её реализацию
php-7.4.12/sapi/cgi/cgi_main.c
PHP_FUNCTION(apache_request_headers) /* {{{ */
{
	if (zend_parse_parameters_none()) {
		return;
	}
	array_init(return_value);
	if (fcgi_is_fastcgi()) {
		fcgi_request *request = (fcgi_request*) SG(server_context);

		fcgi_loadenv(request, sapi_add_request_header, return_value);
	} else {
		char buf[128];
		char **env, *p, *q, *var, *val, *t = buf;
		size_t alloc_size = sizeof(buf);
		zend_ulong var_len;

		for (env = environ; env != NULL && *env != NULL; env++) {
			val = strchr(*env, '=');
			if (!val) {				/* malformed entry? */
				continue;
			}
			var_len = val - *env;
			if (var_len >= alloc_size) {
				alloc_size = var_len + 64;
				t = (t == buf ? emalloc(alloc_size): erealloc(t, alloc_size));
			}
			var = *env;
			if (var_len > 5 &&
			    var[0] == 'H' &&
			    var[1] == 'T' &&
			    var[2] == 'T' &&
			    var[3] == 'P' &&
			    var[4] == '_') {

				var_len -= 5;

				if (var_len >= alloc_size) {
					alloc_size = var_len + 64;
					t = (t == buf ? emalloc(alloc_size): erealloc(t, alloc_size));
				}
				p = var + 5;

				var = q = t;
				/* First char keep uppercase */
				*q++ = *p++;
				while (*p) {
					if (*p == '=') {
						/* End of name */
						break;
					} else if (*p == '_') {
						*q++ = '-';
						p++;
						/* First char after - keep uppercase */
						if (*p && *p!='=') {
							*q++ = *p++;
						}
					} else if (*p >= 'A' && *p <= 'Z') {
						/* lowercase */
						*q++ = (*p++ - 'A' + 'a');
					} else {
						*q++ = *p++;
					}
				}
				*q = 0;
			} else if (var_len == sizeof("CONTENT_TYPE")-1 &&
			           memcmp(var, "CONTENT_TYPE", sizeof("CONTENT_TYPE")-1) == 0) {
				var = "Content-Type";
			} else if (var_len == sizeof("CONTENT_LENGTH")-1 &&
			           memcmp(var, "CONTENT_LENGTH", sizeof("CONTENT_LENGTH")-1) == 0) {
				var = "Content-Length";
			} else {
				continue;
			}
			val++;
			add_assoc_string_ex(return_value, var, var_len, val);
		}
		if (t != buf && t != NULL) {
			efree(t);
		}
	}
}
/* }}} */


Логика как и описано выше: взять заголовки HTTP_* и добавить к ним CONTENT_TYPE/CONTENT_LENGTH. То есть под капотом у всех одно и тоже.

Готовых решений очень много:

Откуда берется заголовок Content-Type: nginx + php-fpm

комментарий перенесён в ветку выше

JSON API – работаем по спецификации

А как в JsonAPI решается следующая задача?
  • Есть список каких-то сущностей GET /api/entity
  • Список этот можно фильтровать, например по году, или другой сущность author
  • Нужно в API ответе передать разрешенные значения для фильтрация год (2020, 2015, 2012), author (другие сущности)


Единственный вариант, который я вижу это самому как-то руками засунуть данные в meta, но выглядит не красиво :(

Переезд в Лондон с женой и собаками. История мобильного разработчика

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

Значит ли это, что в конце месяца приходится самому сидеть с калькулятором и платить налоги, или компания автоматически делает все необходимые налоговые отчисления сама?

Fail Fast! принцип: Отлаживайте меньше и создавайте более надежное ПО

> Почини когда можешь — но когда ты должен упасть, падай тихо и как можно скорее.
Оригинал: Rule of Repair: Repair what you can — but when you must fail, fail noisily and as soon as possible.

Правильный перевод «падай громко», и по логике это правильно, так как надо сообщить о проблеме

Разбор PHP-задач Badoo и новый тест. Как получить оффер в Лондон в феврале

А вариант решеия скачать базу wikipedia из браузера en.wikipedia.org/wiki/Wikipedia:Database_download как засчитывался? :)

Все образовательные проекты Mail.Ru Group

На самом сайте не нашел формы обратной связи, поэтому пишу сюда.
У вас на странице https://it.mail.ru/digital-heroes/hero-hacker/ есть ссылка https://redit.com/r/netsec, пропустили одну букву https://redDit.com/r/netsec.

Parse.com закрывается

А как много у вас устройств на которые вы рассылаете пуши? У нас в Pushwoosh есть стартап план со всеми платными фичами(сможете и из php и из go слать запросы) и аналитикой пользоваться, но с ограничением на количество девайсов. Я сегодня написал на работе мигратор с Parse в Pushwoosh написал :)

Parse.com закрывается

У OneSignal очень медленная отправка пушей, в частности на iOS, и есть подозрение что полностью бесплатным он будет еще не долго. Попробуйте посмотреть в сторону Pushwoosh

PostgreSQL: Приемы на продакшене

Видео конфы наконец-то появилось pgday.ru/ru/news/52. В итоге заюзали OKmeter, графики и язык для форматирования графиков у них шикарные

Обновленный Codebattle: игра для программистов

Проверил на большинстве задач, уникальное решение для php примерно такое =)
<?php

function solution($a) {
    $tests = file_get_contents('data.jsons');
    echo $tests;
    $tests = explode("\n", $tests);
    foreach ($tests as $test) {
        $test = json_decode($test, true);
        $arg = $test['arguments'];
        if (is_array($test['arguments'])) {
        	$arg = $test['arguments'][0];
        }
        if ($arg == $a) {
	    	return $test['expected'];
        }
    }
}

PostgreSQL: Приемы на продакшене

зачетно, в таком случае еще лучше можно одним индексом обойтись

PostgreSQL: Приемы на продакшене

От одного из участников PGDays слышал, что видеозаписи конференции выложат, особенно интересно про системную часть — барьеры, noatime и тп, очень жду, а за ссылку на pgCluu спасибо, сейчас все эти метрики руками собираем из системы или из системных табличек =(

Конкурс Stash: как получить лицензию от JetBrains за свой код

Еще переименовал себя в
Nikita <div> весь сайт поехал =)

Конкурс Stash: как получить лицензию от JetBrains за свой код

Еще если не залогинен и хочешь проголосовать за мой стеш http://gostash.ru/stash/169, то не редиректит на форму логина(если нажать на ракету, chrome 43). image

Urban Airship закрывает бесплатную лицензию

Надеюсь мы говорим об одном и том же — отправке remote push-нотификаций. Для локальных безусловно не нужно.

Написать свой сервис рассылки пуш-уведомлений не самая тривиальная задача.
Нужно написать сервер для регистрации/хранения устройств, приложение должно отсылать свои данные на этот сервер. Затем на этом сервере нужно реализовать отравку в GCM/APNS(при этом подписывание запроса происходит очень не тривиально в APNS).
Так же нужно следить за базой, на андройде токены меняются очень часто и это нужно обрабатывать. При этом нужно следить за статистикой отправки(самому писать аналитику).
Если хочется делать таргетирование по тегам/геозонам, то логика усложняется.
Часто нужно кроме текста пуша передовать разные параметры: ссылки, звук, некоторые данные, мониторить баджи для каждого девайса. И таких небольших моментов очень много =(
1

Information

Rating
Does not participate
Location
Россия
Registered
Activity