Pull to refresh
6
0
Дмитрий Вапельник @dvapelnik

Back-end Web Development

Send message

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

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

другое Always free tier, который крутится на старом железе или забивает остатки ресурсов, которые невозможно дефрагментировать чтобы выделить один значительный.

я буду ждать как будет развиваться Ваша сага – отпишитесь, пожалуйста, в этой ветке

Как давно Вы успешно используете этот кластер?

У меня был подобный негативный опыт: я создал always free tier, на нем два одногиговых интанса x86 и один arm с 24 Гб оперативной памяти. На последнем развернул там ноду k8s и использовал ее для ELK-стека и одного приложения, которое работало с API торговой сети не для коммерческих целей. Перешел на тарифный план Pay-as-you-go чтобы использовать минимальный бесплатный лимит и по истечению первых 30 дней мой аккаунт закрыли, ссылаясь на то, что были нарушены правила использования. Разбирательства со службой поддержки мне не смогли ответиь какой именно пункт был нарушен.

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

спасибо Вам

мне стало яснее где можно это применить
как-то не особо понял в чем была проблема

если у Вас один проект с файлом docker-compose.yml, то в нем, видимо, Вы прописываете и конфигурируете подсервисы ( database server , cache-server , proxy-server ), которые будут слинкованы с application-контейнером, который также сконфигурирован в этом же файле docker-compose.yml

если у Вас несколько проектов, то они, по идее, не должны пересекаться (разве что у Вас один и тот же контейнер используется разными проектами, к примеру, database-server ), тем более на стадии разработки.

docker-compose выдает префиксы для имен контейнеров и у Вас не должны пересекаться названия контейнеров. к примеру, у Вас есть проект project_A и он использует db , то контейнер будет иметь имя, соответственно, project_A_db_1 . и так далее

лично я еще сталкивался с ситуацией, когда у меня возникала подобная проболема с несколькими проектами, которые используют по несколько контейнеров. в разработке я использую как минимум по два контейнера: database + application

не могбы бы Вы описать практическую ситуацию из жизни на стадии разработки чтобы представить когда нужно будет использовать этот подход?

спасибо
а что если существует элемент со значением null?
вообще довольно распространенной практикой поиска элемента в массиве является получение индекса искомого элемента в массиве (indexOf) и значение -1 если такового элемента не было найдено. тот же array_search возвращает FALSE в случае если элемента не найден, что позволяет однозначно идентифицировать тот факт, что элемент не найлен
в свое время я интересовался подобным вопросом — мне нужно автоматически репостить некое сообщение на стену и в сообщество. да, можно выдирать из standalone-приложения или же через blank.html, но проблема в том, что этот токен живет одни сутки и, следовательно, каждые сутку нужно снова руками выдирать этот токен чтобы прописать его в приложение, которое делает репост

как я понимаю, у ВК следующая политика: есть некоторые действия, для которых необходимо вмешательство пользователя (пользователь должен сам кликнуть, тапнуть, клацнуть на кнопку и тогда отправится сообщение или сделается репост) и автоматизировать их нельзя

и да, за получение токена из blank.html выдается бан
После того как я проорал «нееееееееет!» во всю мощь моих легких

очень красивый получился эвфемизм
Прошло некоторое время и я не знаю решилась ли у Вас проблема, но у меня контейнер поднялся:
Вот мой лог
habr$ sudo docker-compose up
Creating habr_db_1...
Pulling image postgres:latest...
latest: Pulling from postgres

843e2bded498: Pull complete
8c00acfb0175: Pull complete
72893ec31c4c: Pull complete
640a8e5c87b4: Pull complete
c370f4f57320: Pull complete
ae0f1b627d5e: Pull complete
1ee7d372b3e2: Pull complete
716505dd384f: Pull complete
5f1b1f91bfd4: Pull complete
241d4bf7490c: Pull complete
b924e91017bc: Pull complete
5ea6304ae9d3: Pull complete
7f2fa48b55fb: Pull complete
2ad0abeca190: Pull complete
a04ebe635e69: Pull complete
0e57c609ffa9: Pull complete
a9e279ca41a9: Pull complete
8d2164ecd807: Pull complete
1f89bef4c5c4: Pull complete
c540273be9bb: Pull complete
506c40f60539: Pull complete
postgres:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:a11e806f65a093bde78acb1ecc0182adcb7e9fe61176344b903442517012fc4a
Status: Downloaded newer image for postgres:latest
Attaching to habr_db_1
db_1 | The files belonging to this database system will be owned by user "postgres".
db_1 | This user must also own the server process.
db_1 | 
db_1 | The database cluster will be initialized with locale "en_US.utf8".
db_1 | The default database encoding has accordingly been set to "UTF8".
db_1 | The default text search configuration will be set to "english".
db_1 | 
db_1 | Data page checksums are disabled.
db_1 | 
db_1 | fixing permissions on existing directory /var/lib/postgresql/data ... ok
db_1 | creating subdirectories ... ok
db_1 | selecting default max_connections ... 100
db_1 | selecting default shared_buffers ... 128MB
db_1 | selecting dynamic shared memory implementation ... posix
db_1 | creating configuration files ... ok
db_1 | creating template1 database in /var/lib/postgresql/data/base/1 ... ok
db_1 | initializing pg_authid ... ok
db_1 | initializing dependencies ... ok
db_1 | creating system views ... ok
db_1 | loading system objects' descriptions ... ok
db_1 | creating collations ... ok
db_1 | creating conversions ... ok
db_1 | creating dictionaries ... ok
db_1 | setting privileges on built-in objects ... ok
db_1 | creating information schema ... ok
db_1 | loading PL/pgSQL server-side language ... ok
db_1 | vacuuming database template1 ... ok
db_1 | copying template1 to template0 ... ok
db_1 | copying template1 to postgres ... ok
db_1 | syncing data to disk ... 
db_1 | WARNING: enabling "trust" authentication for local connections
db_1 | You can change this by editing pg_hba.conf or using the option -A, or
db_1 | --auth-local and --auth-host, the next time you run initdb.
db_1 | ok
db_1 | 
db_1 | Success. You can now start the database server using:
db_1 | 
db_1 |     postgres -D /var/lib/postgresql/data
db_1 | or
db_1 |     pg_ctl -D /var/lib/postgresql/data -l logfile start
db_1 | 
db_1 | ****************************************************
db_1 | WARNING: No password has been set for the database.
db_1 |          This will allow anyone with access to the
db_1 |          Postgres port to access your database. In
db_1 |          Docker's default configuration, this is
db_1 |          effectively any other container on the same
db_1 |          system.
db_1 | 
db_1 |          Use "-e POSTGRES_PASSWORD=password" to set
db_1 |          it in "docker run".
db_1 | ****************************************************
db_1 | waiting for server to start....LOG:  database system was shut down at 2015-09-21 10:11:01 UTC
db_1 | LOG:  MultiXact member wraparound protections are now enabled
db_1 | LOG:  database system is ready to accept connections
db_1 | LOG:  autovacuum launcher started
db_1 |  done
db_1 | server started
db_1 | ALTER ROLE
db_1 | 
db_1 | 
db_1 | /docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
db_1 | 
db_1 | waiting for server to shut down....LOG:  received fast shutdown request
db_1 | LOG:  aborting any active transactions
db_1 | LOG:  autovacuum launcher shutting down
db_1 | LOG:  shutting down
db_1 | LOG:  database system is shut down
db_1 |  done
db_1 | server stopped
db_1 | 
db_1 | PostgreSQL init process complete; ready for start up.
db_1 | 
db_1 | LOG:  database system was shut down at 2015-09-21 10:11:02 UTC
db_1 | LOG:  MultiXact member wraparound protections are now enabled
db_1 | LOG:  database system is ready to accept connections
db_1 | LOG:  autovacuum launcher started


Возможно проблема еще в чем-то. Я создал файл docker-compose.yml и поместил туда Ваш код.
Когда я переименовал файл, то при запуске увидел следующее:
habr$ sudo docker-compose up
Can't find a suitable configuration file. Are you in the right directory?

Supported filenames: docker-compose.yml, docker-compose.yaml, fig.yml, fig.yaml

Возможно, Вы неправильно обозвали файл с конфигурацией?
docker-compose — это всего лишь утилита для оркестрации, которую удобно использовать для того, чтобы запустить несколько контейнеров, которые конфигурируются в yml-файле. установка и конфигурирование софта, который будет использоваться в контейнере, производится либо в Dockerfile-е либо в bootstrap-скрипте, который помещается в контейнер и запускается вместе с ним при запуске. Docker может заменить Vagrant
мое мнение, что гораздо удобнее запускать и дебажить консольные скрипты именно через конфигурационный профиль в IDE как я описывал выше
дебаг точно есть при запуске тестов в режиме дебага (Shift+F9) и при этом можно установить брейк-поинт и начинать дебажить там, где нужно

Скрин

кстати, запускается все это дело в таком виде

/usr/bin/php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 [another arguments for start phpunit]

как запускать с консоли чтобы PhpStorm ловил соединение от xdebug-а я не разобрался, но PhpStorm довольно просто позволяет запускать и дебажить консольные скрипты. проще всего — кликнуть ПКМ и найти в контекстном меню «Run» или «Debug». по идее должно быть два варианта у кажлого — запуск через браузер и запуск через CLI. выбираете второй вариант. автоматически создастся профиль для запуска и дебага этого скрипта. дальше ставите брейкпоинт и запускаете дебаг (Shift+F9)

Изображения


а он рестфульный или действительно, просто json?
именно static и ведет себя так, как должен вести себя в классических ОО-языках, для меня было большей неожиданностью поведение self когда я узнал о позднем связывании. потому следует понимать когда нужно использовать self, а когда static. как по мне, то использование static более прозрачно, а вот self использовать уже когда это дейсвительно нужно оправдано
я с такими приложениями не сталкивался — для всех приложений есть конфиг, в котором указывается что куда должно подключаться (IP:port). актуальным использованием вижу такую ситуацию: вы ведете разработку веб-приложения, которое коннетктится к редису, мемкешу, какой-нибудь БД и деплоите это приложение на сервер, где у эти все сервисы запущены на локалхосте, и для того, чтобы было легко деплоить можно сокатом перекидывать всё со слинкованных контейнеров на локалхост главного контейнера — тогда приложение нормально будет деплоиться обычной выгрузкой файлов

я о сокате не знал, а тепер знаю — за это спасибо
нельзя, если древовидная структура — это скомпонированное древовидное множество из одной иерархии класса, но в таком случае лучше проходить каким-то посетителем
для того, чтобы запускать тесты нужно, как минимум, чтобы код был тестируемым. в упомянутом проекте код нетестируем и достался от немцев-рукоблудников. что говорить, если «смешались в кучу кони, люди» — php+html. как раз та ситуация, что работает — не трожь

да, все верно, если есть написанные тесты, то можно быстро локализировать проблему

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

Она станет стабильной осенью. А минимальной полностью поддерживаемой версией станет 5.6.

только на хостингах все равно останется php5.4-5.6 и php7 в роли экзотики
обычно если изменяется мажорный номер версии, то можно не говорить об обратной совместимости. да, код php4 может частично работать под php5 в виду того, что некоторые ф-ии поддерживаются, но они уже deprecated. аналогичную ситуацию следует ожидать и php5->php7. некоторые так пишут проекты, что даже в одной мажорной версии проект может не работать, но это зависит уже от разработчика. у меня крутится один такое проект, который работает только на php5.3 и для него приходится держать отдельный сервер чтобы не городить костылей с мультиверсионностью

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

вот поиграться и покатать бету можно будет — это будет интересно

аналогичная ситуация с ES6 — зоопарк браузеров все еще развивается и разрастается и не все обновляют свои «клиенты». снова нужно ждать пока появится лучшая поддержка стандарта браузерами

в любом случае прогресс — это отлично!
сейчас наблюдается переломный момент в плане обновления спецификаций, но сообщество как-то неоднозначно воспринимает их: если выхода ES6 ждут и пилят фичи, которые позволяют использовать сырой ES6 уже сейчас чтобы было легче перейти потом, то python3 и php7 либо дружно отвергают, либо не знают что будет
дело в том, что предыдущих версиях ES все было сыро, а в ES6 будет круче? возможно, но тогда не могу согласиться с тем, что в актуальных версиях Python и PHP все отлично. наверное, дело не в этом
а может разработчики пошли не тем путем, которого ожидало сообщество? а каким путем следовало пойти?
ага, спасибо за разъяснения
1
23 ...

Information

Rating
Does not participate
Location
Винница, Винницкая обл., Украина
Date of birth
Registered
Activity