Задать вопрос
  • Как создать виджет сообщества VK?

    sergiks
    @sergiks Куратор тега ВКонтакте
    ♬♬
    Простой способ
    Есть готовое бесплатное приложение для Сообществ "LiveWidget" – там от вас требуется только код самого виджета составить. В вашем сообществе меню три точки - Управление сообществом - Приложения, листаете список предлагаемых приложений до LiveWidget, жмёте «Добавить»:
    скрин
    5af95de14a7d2991085711.png
    Джедайский способ
    В документации по созданию виджета для сообщества всё подробно описано. Вкратце:
    1. создать приложение – Встраиваемое приложение – Приложение сообщества
    2. адресом iframe укажите ваш сервер и папку, где лежит, например, такой HTML
    3. зайдите в ваше Сообщество – меню Управление сообществом – Приложения – выберите там ваше свежесозданное приложение
    4. дайте ему разрешение на добавление виджетов
    5. вставьте код вашего виджета и сделайте его предпросмотр – если в коде виджета нет ошибок, во всплывающем окошке покажут, как он выглядит и предложат установить его в сообщество.
    Скрин приложения
    5af9668c9208d318099967.png
    Код приложения
    <!DOCTYPE html>
    
    <html lang="">
    <head>
        <meta charset="utf-8">
    
        <title>Widgeteer</title>
        <meta name="description" content="Создание виджета для сообщества ВКонтакте">
        <meta name="keywords" content="Sergei Sokolov,ВК,виджет,конструктор">
        <meta name="robots" content="noindex,nofollow">
        
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
    </head>
    
    <body>
    	<div class="container">
    		<h3>Виджет для сообщества ВК</h3>
    		
    		<div id="b-alerts"></div>
    		
    		<div class="form-group">
    			<button id="btn-permission" class="btn btn-primary" type="button">Дать разрешение</button>
    		</div>
    
    		<div class="form-group">
    			<label for="in-type">Тип виджета:</label>
    			<select class="form-control" id="in-type">
    				<option value="text">text</option>
    				<option value="list">list</option>
    				<option value="table">table</option>
    				<option value="tiles">tiles</option>
    				<option value="compact_list">compact_list</option>
    				<option value="cover_list">cover_list</option>
    				<option value="match">match</option>
    				<option value="matches">matches</option>
    			</select>
    		</div>
    		
    		<div class="form-group">
    			<label for="in-code">Код виджета:</label>
    			<textarea rows="7" class="form-control" id="in-code">return {
    "title": "Цитата",
    "text": "Текст цитаты"
    };</textarea>
    		</div>
    
    		<button id="btn-preview" class="btn btn-primary" type="button">Предпросмотр виджета</button>
    				
    	</div><!-- /.container -->
    	
    	
    	
    
    	<!-- Bootstrap JavaScript -->
      <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T" crossorigin="anonymous"></script>
    	<!-- /Bootstrap JavaScript -->
    	
    	<!-- main script -->
    	<script>
    		function onReady() {
    
    			// Слушать события предпросмотра виджета 
    			VK.addCallback('onAppWidgetPreviewFail', function(e){
    				console.error('onAppWidgetPreviewFail', e);
    				showAlert('warning', 'onAppWidgetPreviewFail');
    			});
    			
    			VK.addCallback('onAppWidgetPreviewCancel', function(e){
    				console.error('onAppWidgetPreviewCancel', e);
    				showAlert('info', 'onAppWidgetPreviewCancel');
    			});
    			
    			VK.addCallback('onAppWidgetPreviewSuccess', function(e){
    				console.log('onAppWidgetPreviewSuccess', e);
    				showAlert('success', 'onAppWidgetPreviewSuccess');
    			});
    			
    			// События нажатия на кнопки
    			$('#btn-permission').on('click', function(){
    				console.log('showGroupSettings');
    				VK.callMethod("showGroupSettingsBox", 64);
    			});
    			
    			$('#btn-preview').on('click', function(){
    				var type = $('#in-type').val(),
    				  code = $('#in-code').val()
    			  ;
    				
    				console.log('showAppWidgetPreviewBox', {type: type, code:code});
    				VK.callMethod("showAppWidgetPreviewBox", type, code);
    			});
    
    		}
    
    
    		function showAlert(className, text) {
    			var html = [
    				'<div class="alert alert-dismissible alert-'+className+'" role="alert">',
    					text,
    				'</div>',
    			].join('\n');
    			$('#b-alerts').append(html);
    		}
    	</script>
    	<!-- /main script -->
    	
    
    	<!-- VK scripts -->
    	<script src="https://vk.com/js/api/xd_connection.js?2"  type="text/javascript"></script>
    	
    	<script type="text/javascript">
    	  VK.init(function() {
    	     // API initialization succeeded
    	     onReady();
           
    	  }, function() {
    	     // API initialization failed
    	     // Can reload page here
    	     console.error('VK init error', arguments);
    		}, '5.74');
    	</script>
    	<!-- /VK scripts -->
    
    </body>
    </html>


    Какие бывают типы виджетов см. на странице документации по объекту appWidget.

    Какой конкретно шаг в этом сценарии у вас не получился?
    Ответ написан
  • САПР для печатных плат под linux?

    @vanyamba-electronics
    Eagle PCB скачать.
    Бесплатная версия имеет ограничение на количество слоёв (2) и на размеры платы (80х100 мм).
    Ответ написан
    Комментировать
  • Докеризация приложения?

    Философия докера размещать в одном контейнере один сервис.
    Например, отдельные контейнеры: MySQL, php-fpm, nginx. Как будто это коробки в локальной сети, видят друг друга. А во внешний мир торчит только порт 443 nginx.

    Для удобного управления многоконтейнерным приложением есть Docker Compose. В одном файле docker-compose.yml лаконично описываются все сервисы. Это короче, чем bash скрипт и «так правильно».

    Всё в одном контейнере с ubuntu —
    плохая практика

    Можно и все делать в одном контейнере. Но это мало чем отличается от просто vps. Так же приходится ставить доп. софт, обновления. И потом, чтобы переехать на другой сервер, тащить тяжёлый образ. И никак не масштабировать.
    Ответ написан
    8 комментариев
  • Что требуется знать Системному Администратору Linux систем?

    OrlovEvgenii
    @OrlovEvgenii
    golang developer / DevOps
    Имеется опыт работы с Ansible, nginx, разверткой различных инструментов

    Только не ставь акцент на must have туллинге линукс администратора на каждый день, и прочих нагрудных медалей aka - умею в ansible, умею в docker, умею в кластеры, умею на awk в строчку спарсить лог. На ранних этапах тебе это вообще не нужно. Наращивай просто опыт, решай реальные задачи и попутно применяй востребованные инструменты там где они применимы, одним словом делай что-то полезное, автоматизируй рутинные вещи, скриптуй. Будь готов отвечать сам себе на вопрос - почему ты сделал именно так, а не по другому? Конструктивным ответом. А не - ну так все щас делают / в мануале в блоге у Васяна написано / потому что докер.
    Ответ написан
    2 комментария
  • Что требуется знать Системному Администратору Linux систем?

    Zoominger
    @Zoominger Куратор тега IT-образование
    System Integrator
    Изучите поиск, можно по сайту для начала.
    Ну или зайдите на hh.ru и смотрите в вакансиях требования к системным администраторам Linux.
    Ответ написан
    Комментировать
  • Система лайков на php?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    Я перепробывал много вариантов, и всё не могли проверить на наличии двух лайка с одного аккаунта на одном и том же посте

    - да нихрена ты не пробовал, иначе не писал бы такую чушь. Задачка на младшего помощника джуниора, ей богу.
    Ответ написан
    1 комментарий
  • Как проверять нажатие клавиши submit?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    джаваскриптом

    document.getElementById('button').onclick = function() {
       alert("Fuck'you, Spielberg");
    }​;​
    Ответ написан
    Комментировать
  • Сложно ли иностранцу стать программистом в РФ?

    opium
    @opium
    Просто люблю качественно работать
    А что украинцы стали чем то хуже? Или у украинца нет глаз? Или рука одна и медленно печатает?
    Ну реально какая разница программисту украинец он русский или бурят
    Ответ написан
    Комментировать
  • Сложно ли иностранцу стать программистом в РФ?

    fo_otman
    @fo_otman
    Веб-разработчик
    Украинцы легко и непринужденно работают на западные компании и все русские им завидуют. Нечего тут ловить, смотри на Запад. У вас в стране куча компаний так работают.
    Ответ написан
    Комментировать
  • Где можно взять идеи для проекта?

    AngryYumy
    @AngryYumy
    Заплати фрилансеру чеканой монетой
    Поиск по сайту - великая вещь.
    На неделю пару раз вопрос точно мелькает.
    Всякие кикстартеры и бла-бла где пацаны идеи пытаются продать - бери не хочу.
    Ответ написан
    Комментировать
  • Где можно взять идеи для проекта?

    sabramovskikh
    @sabramovskikh
    Устроится на работу - времени что-то свое придумывать не будет. Будут постоянно реальные проекты.
    Ответ написан
    Комментировать
  • Альтернатива OpenSSH для Ubuntu?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    хоть и знатный тролль спросил, но не удержусь..

    А чем вас OpenSSH то не устраивает?
    Ответ написан
    2 комментария
  • Почему приведение типа к целому числу меняет результат?

    IceRD
    @IceRD
    https://www.php.net/manual/ru/language.types.float...

    Никогда не приводите неизвестную дробь к integer, так как это иногда может дать неожиданные результаты.
    echo (int) ( (0.1+0.7) * 10 ); // выводит 7!
    Ответ написан
    Комментировать
  • Что должен знать junior php на 2020 и стоит ли ходить на все собеседования?

    daemonhk
    @daemonhk
    ПсиХоПат
    Что должен знать junior php на 2020

    как вы задолбали со своими 2019, 2020, маразм да и только...

    девушки которая ушла

    на 3 буквы таких спутниц жизни

    28 слишком стар

    "туда же, в одну топку" (с)

    Найдите работодателя-наставника, пофиг на чем писать будете, фреймворк, бесплатная CMS, студийная CMS, главное, чтобы вы понимали принцип работы и могли решать задачи.
    Ответ написан
    Комментировать
  • Зачем использовать реляционные субд для этой ситуации?

    @xfg
    Если комментариев к статье неограниченное количество, то хранить данные таким образом - неудачная идея. В mongodb документ по умолчанию не может превышать более 16 mb, но даже при отсутствии подобного ограничения, это привело бы к единовременному считыванию большого объема данных в память. В таком случае данные следует моделировать также, как и в РСУБД.

    Есть CAP-теорема и выбирать тип базы данных нужно исходя из того, какие 2 из 3 свойств для вас важнее. РСУБД дают согласованность и доступность (CA), но жертвуют возможностью разделения такой базы, nosql решения идут другим путем и жертвуют согласованностью в пользу доступности и устойчивости к разделению (AP). Согласованность данных в таких системах достигается при помощи шаблона Saga вместо ACID.

    В целом NoSQL это про проекты данные которых не помещаются в рамках одного сервера, а не про то, каким образом моделировать эти данные. Вложенные документы в mongodb - это скорее следствие её архитектуры, которое используют как маркетинговый ход, чем решение, которое будет использоваться повсеместно. В подавляющем большинстве случаев документы будут ссылаться друг на друга, точно также как это происходит и в РСУБД.

    Для проекта с крохотными объемами данных логичнее выбирать РСУБД и тем самым значительно упростить себе жизнь. Но в целом как используют NoSQL, шардируют данные и как достигают согласованности данных при отсутствии ACID знать желательно, хотя бы в общих чертах.

    Самое ужасное, это выбрать базу данных и использовать её неправильно, как пример документа с вложенными комментариями при условии их бесконечности в mongodb. Пишем скрипт генерирующий триллион комментариев к статье, а затем просим нам выдать эту статью и сайт уходит в офф. Хорошо что в mongodb есть защита от дурака.
    Ответ написан
    1 комментарий
  • Чем kill отличается от stop?

    SagePtr
    @SagePtr
    Еда - это святое
    docker stop посылает сигнал SIGTERM и только через некоторое время прибивает процесс, если тот не завершил работу "по-хорошему". А docker kill - сразу посылает SIGKILL и прибивает без лишних ожиданий. Или другой сигнал, который можно параметром указать.
    https://docs.docker.com/engine/reference/commandli...
    https://docs.docker.com/engine/reference/commandli...
    Ответ написан
    3 комментария
  • Как правильно подсчитать время, проведённое пользователем в онлайне (VK API)?

    sergiks
    @sergiks Куратор тега ВКонтакте
    ♬♬
    Ответ зависит от алгоритма, частоты ваших проверок и обновлений параметра last_seen на стороне ВКонтакте.

    Наверное, стоит на своём аккаунте провести ряд экспериментов, чтобы выяснить:
    1. как обновляется время last_seen (с какой точностью), если:
      • в моб. приложении проявлять активность - прокручивать, листать
      • в моб. приложении проявлять активность - ставить лайки
      • в моб. приложении не проявлять активность, но держать открытым на виду
      • в моб. приложении не проявлять активность, держать в фоне
      • те же 4 пункта, но на сайте ВК.
      • если серверное standalone приложение от имени пользователя выполнит запрос к API
      • если iFrame приложение от имени пользователя по таймауту выполнит запрос к АПИ, при этом сам пользователь никаких действий, даже движений мышкой, не предпримет – обновит ли это last_seen?

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


    Это поможет сделать выводы:
    1. как часто имеет смысл проверять для одного юзера параметр last_seen: раз в 15 минут, в 10, в 5, каждую минуту?
    2. и только тогда – как интерпретировать полученые данные – ваш исходный вопрос.
    Ответ написан
    3 комментария
  • В чем профит использования Linux для программирования?

    Oxyd
    @Oxyd
    Linux enthusiast
    Буду краток. Она просто другая. А так как софт пишется для работы в линукс окружении, то и писать лучше сразу под линукс.
    Ответ написан
  • Идеи для пет проекта в продакшен?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Сходите на стартаперские сайты - там миллион людей которые ничего не могут сделать но с кучей "очень перспективных идей для глобального рынка".
    Скажите что вы бесплатный CTO - вас закидают предложениями запилить их идею.
    Ответ написан
    1 комментарий
  • Как отправить случайное фото из альбома с помощью питон?

    @anerev
    https://vk.com/dev/photos.getAll добавляешь в список id фото и потом random.choice() отправляешь в сообщении
    Ответ написан
    Комментировать