|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
|
|||||||||||||||||||||||||||||||
[Заметка] Небольшой пример работы с Web31.07.2013, 20:33. Показов 2390. Ответов 6
Метки нет (Все метки)
Попробуем решить эту задачку.
Для начала напишем веб-сервер для тестирования нашего приложения: файл $GOPATH/src/fetcher/testsrv/testsrv.go
Помимо собственно сервера, создадим необходимый файл $GOPATH/src/fetcher/testsrv/ver.txt и каталог $GOPATH/src/fetcher/testsrv/files/, а также заполним его несколькими фйалами и каталогами для примера: файл $GOPATH/src/fetcher/testsrv/files/plain.txt
Файловый сервер (http.FileServer) при поиске файлов на жестком диске будет добавлять к пути путь из адресной строки, т.е. для запроса «http://<domain>:<port>/files/» путь файловой системы будет «$wd/files/files/». Чтобы этого не происходило, префиц можно «обрезать» специальной прослойкой http.StripPrefix. И так, запускаем сервер без параметров, выполнив команду «go run testsrv.go» в каталоге $GOPATH/src/fetcher/testsrv/ и проверяем в браузере корректность работы (примеры во вложениях, кнопка «Toggle Formatting» и форматирование JSON не предоставляются веб-сервером из пакета net/http, это плагин для браузера). Теперь приступим собственно к решению задачи: файл $GOPATH/src/fetcher/fetcher.go
Функция download в качестве первого параметра принимает любое значение, поддерживающее интерфейс io.Writer. Т.к. версию с сервера нам нужно получить в переменную, чтобы сравнить с локальной версией, мы используем в качестве такого значения буфер байт, сам же файл, который нам нужно скачать, если версия сервера более новая, мы выводим в стандартный поток вывода (т.е. в «консоль»), для сохранения полученных данных в файл достаточно перенаправить вывод в нужный файл. Согласно документации к пакету net/http, любой клиент, читающий данные из тела ответа (resp.Body) http-сервера, обязательно должен закрыть этот поток после чтения. Инструкция defer откладывает вызов процедуры, к которому она применена (в данном случае это resp.Body.Close(), до завершения текущего вызова (процедуры download), при этом гарантируя, что этот вызов будет сделан даже при аварийном завершении текущего вызова. Остается только проверить работу новой программы:
5
|
|||||||||||||||||||||||||||||||
| 31.07.2013, 20:33 | |
|
Ответы с готовыми решениями:
6
[Заметка] Небольшой пример ООП
Я сделал небольшой туду лист там должно сохранятся новая информация (новая заметка) которая я ввела но она не сохраняется |
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
|
||
| 31.07.2013, 22:39 [ТС] | ||
|
0
|
||
| 31.07.2013, 22:50 | |
|
о, вы знаете, очень интересен go! времени на все не хватает... не знаю, можно ли вас попросить... как-нибудь провести сравнение производительности go-based серверов с erlang-based?
ну и с nginx-ом. очень интересно, какую нагрузку держат, что по коннектам, по памяти? что с надежностью?Если вам это неинтересно, то извините, что не в тему просто случайно увидел в топиках go, думаю, дай-ка спрошу...Добавлено через 1 минуту *web-серверов, я имел ввиду, в первую очередь
0
|
|
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
|
||
| 31.07.2013, 23:01 [ТС] | ||
|
Erlang все же выиграл, но Go отстал не намного (кроме некоторых показателей), а кое где уступил, следующему за ним Python'у.
1
|
||
| 31.07.2013, 23:10 | |
|
ухты, странно, как я мог такое пропустить... столько тестов видел, но этот толи не попадался, толи забыл. а может... это было на хабре и я go тогда в нем не заметил... не помню, вообщем, спасибо
![]() Добавлено через 2 минуты Не по теме: точно. есть в просмотренных. голова моя дырявая *wall*
0
|
|
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
|
||
| 31.07.2013, 23:15 [ТС] | ||
|
Кстати, там появилось несколько статей по Go http://habrahabr.ru/hub/go/page2/ (я давно не заходил =) ).
0
|
||
| 31.07.2013, 23:15 | |
|
Помогаю со студенческими работами здесь
7
Пример небольшой игры Небольшой пример адаптивной верстки Нужен небольшой пример с конвертерами
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|