• Парсинг погоды - C#?

    2ord
    @2ord
    Как делается разбор XML? Библиотеками... Читаем документацию...
    Ответ написан
    Комментировать
  • Собираюсь продавать pdf-ки с сайта. Какой инструментарий выбрать?

    2ord
    @2ord
    Ещё вариант: PayPal Shopping Cart
    demo_sc_1.gif
    Ответ написан
    Комментировать
  • Как обновить страницу не обновляя iFrame?

    2ord
    @2ord
    Полагаю, что можно обновить информацию некоторых узлов DOM, не затрагивающих iframe, при помощи AJAX.
    Ответ написан
    Комментировать
  • Machine learning. Как сделать выведение pattern-ов на большом объёме данных?

    2ord
    @2ord
    Путь URL можно рассматривать как ориентированный граф.
    Каждая часть пути, разделённая косой чертой, представляет собой узел.
    Повторяющиеся узлы могут быть слиты воедино, если они соответствуют определённым шаблонам узлов и частота таких узлов равна единице (URL некоторого товара на сайте уникален несмотря на повторения в запросах в логах). Допустим, только числовые значения (/1/, /2/, /999/) или узлы, генерируемые для permalink (/kakoe-to-nazvanie-statii-bloga/).

    Дополнительная ссылка: Кластеризация графов и поиск сообществ.
    Ответ написан
    Комментировать
  • Как сделать выгрузку дампа из SVN под Windows сразу в zip файл?

    2ord
    @2ord
    Можно использовать сжатие gzip, что решает проблему с конвейерным сжатием. А ещё pigz (используя сжатие на многоядерном процессоре).
    Также можно использовать xz или pixz.
    Ответ написан
  • Как запустить локальное mysql, если после установки не дает подключиться?

    2ord
    @2ord
    После (пере)запуска сервера нужно удостовериться что сервер готов принимать соединения.

    Если указано в конфигурации типа такого socket=/var/mysql/mysql.sock то проверяй с mysqladmin -u root -p status .

    Если соединение через сетевой порт, то нужно проверять прослушивание портов так: netstat -tuln4 (Linux/Mac)

    Пробуй проверить подключение с mysqladmin -h 127.0.0.1 -P 3306 -u root -p status
    Ответ написан
    Комментировать
  • Блокируется база SQLite, как решить?

    2ord
    @2ord
    Использовать SQLite по назначению - в однопользовательском режиме. Веб-сайт - многопользовательская система.
    Перейти на подходящие решения RDBMS.
    Ответ написан
  • Поле из другой таблицы?

    2ord
    @2ord
    Ход мыслей для решения задачи мог бы быть таким:

    Посредством чего при помощи каркаса RoR заносятся данные в таблицы БД?
    Посредством экземпляров моделей и методов create/update_attributes/destroy/delete.

    Какой метод контроллера будет отвечать за обновление?
    Метод согласно концепциям REST и CRUD.

    Как поступают данные в метод контроллера?
    Все данные поступают посредством HTTP запросов GET/POST/PUT/PATCH/DELETE через параметры, которые доступны в params.

    Каким образом можно передать данные через параметры?
    Можно отправить при:
    • отправке параметров формы экземпляра модели. При этом можно отправлять как параметры от элементов формы, так и в скрытых параметрах.
      Читать:
      https://mkdev.me/posts/kak-rails-peredayot-paramet...
      https://mkdev.me/posts/vsyo-chto-nuzhno-znat-o-rou...

    • при переходе пользователем по ссылке с дополнительными включенными параметрами, через запрос GET.


    Как передать "неродные" атрибуты из формы экземпляра модели?
    Посредством параметров в пространстве имён другой модели. Схематично таким образом:
    form
      modelA
        paramK
        paramL
        paramM
      modelB
        paramX
        paramY
        paramZ


    Дальше разберёшься сам?
    Ответ написан
    Комментировать
  • Как отобразить новые поля в schema.rb?

    2ord
    @2ord
    schema.rb будет отображать новое состояние счемы БД только если миграция прошла успешно.
    Для проверки последней версии последней миграции БД запусти команду bundle exec rake db:version
    Должно показать строку
    Current version: ... (дата)
    Ответ написан
    Комментировать
  • Как отловить ошибку postgres?

    2ord
    @2ord
    В методе контроллера:
    begin
    	# здесь находится AR запрос ...
    rescue ActiveRecord::StatementInvalid => e
    	render( json: { message: "ActiveRecord::StatementInvalid error: #{e.message}" }, status: :bad_request )
    	return
    end
    Ответ написан
    Комментировать
  • Как правильно составить запрос?

    2ord
    @2ord
    Получилось только, если перебирать записи так:
    Record.limit(2).offset(5).sort { |x,y| y.created_at <=> x.created_at }

    А если записей будет очень много?

    Твой код правилен.
    .limit() ограничивает количество записей, возвращаемых SQL БД, сортируя по primary ID, усли не указано другое. Так что никаких проблем с масштабируемостью здесь не должно быть.
    Желательно ещё использовать .select() для избранных полей, чтобы ещё немного ускорить запрос.
    Ответ написан
    Комментировать
  • Есть ли возможность подружить SDL2 & GTK?

    2ord
    @2ord
    GTK-demo 1.2
    /* A simple example of using SDL with GTk */
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    
    #include <gtk/gtk.h>
    #include <gdk/gdkx.h>
    
    #ifdef USE_XSHAPE
    #include <X11/Xlib.h>
    #include <X11/extensions/shape.h>
    #endif
    
    #include "SDL.h"
    
    #define WINSIZEX 320
    #define WINSIZEY 200
    
    /* The main display surface */
    GtkWidget *mainwin;
    SDL_Surface *screen = NULL;
    
    
    #ifdef USE_XSHAPE
    int use_shape = 0;
    Pixmap shape_mask = 0;
    GC shape_gc;
    int shape_x = 0;
    int shape_y = 0;
    int shape_dx = 0;
    int shape_dy = 0;
    
    void ResizeShape(void)
    {
    	Display *dpy;
    	XGCValues GCvalue;
    
    	if ( ! use_shape ) {
    		return;
    	}
    	dpy = GDK_WINDOW_XDISPLAY(mainwin->window);
    	if ( shape_mask ) {
                    XFreePixmap(dpy, shape_mask);
                    XFreeGC(dpy, shape_gc);
    	}
    	shape_mask = XCreatePixmap(dpy, DefaultRootWindow(dpy),
    	                           screen->w, screen->h, 1);
    	GCvalue.function = GXcopy;
            shape_gc = XCreateGC(dpy, shape_mask, GCFunction, &GCvalue);
    	XSync(dpy, False);
    }
    
    void ShapeWindow(void)
    {
    #ifdef SQUARE_HOLE
    #define RADIUS 16
    #else
    #define RADIUS 24
    #endif
    	Display *dpy;
    	Window win;
    	int x, y, i;
    	void (*set_bit)(XImage *image, int x, int y);
    	int (*get_bit)(XImage *image, int x, int y);
    
    	if ( ! use_shape ) {
    		return;
    	}
    
    	/* Only move the shape every 100'th time through */
    	{ static int step = 0;
    	  if ( (step++)%100 != 0 ) {
    		return;
    	  }
    	}
    
    	/* Set the window and display */
    	dpy = GDK_WINDOW_XDISPLAY(mainwin->window);
    	win = GDK_WINDOW_XWINDOW(mainwin->window);
    
    	/* Bounce the hole when it hits the edge */
    	if ( shape_x == 0 ) {
    		shape_dx = 1;
    	}
    	if ( shape_x >= (screen->w-(2*RADIUS)) ) {
    		shape_x = (screen->w-(2*RADIUS));
    		shape_dx = -1;
    	}
    	if ( shape_y == 0 ) {
    		shape_dy = 1;
    	}
    	if ( shape_y >= (screen->h-(2*RADIUS)) ) {
    		shape_y = (screen->h-(2*RADIUS));
    		shape_dy = -1;
    	}
    
    	/* Move the hole around */
    	shape_x += shape_dx;
    	shape_y += shape_dy;
    
    	/* Now put the hole in the mask
    	   Note: you can also set the mask directly by getting an XImage
    	         of it, and modifying the data member and then putting
    	         the image to the mask pixmap.  You have to think about
    	         the bit ordering in the image though.  Using X calls is
    	         better for simple shapes because the X server will take
    	         care of the bit ordering, and possibly use hardware
    	         acceleration when possible.
    	*/
    	dpy = GDK_WINDOW_XDISPLAY(mainwin->window);
    	XSetForeground(dpy, shape_gc, ~0);
    	XFillRectangle(dpy, shape_mask, shape_gc, 0, 0, screen->w, screen->h);
    	XSetForeground(dpy, shape_gc, 0);
    #ifdef SQUARE_HOLE
    	XFillRectangle(dpy, shape_mask, shape_gc, shape_x, shape_y, 2*RADIUS, 2*RADIUS);
    #else
    	XFillArc(dpy, shape_mask, shape_gc, shape_x, shape_y, 2*RADIUS, 2*RADIUS, 0, 360*64);
    #endif
    
    	/* Set the mask on the window */
    	XShapeCombineMask(dpy, win, ShapeBounding, 0, 0, shape_mask, ShapeSet);
    
    	/* Update the whole screen */
    	SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
    }
    
    /* Check for the X shaped window extension */
    void CheckShape(void)
    {
    	int ev_base, er_base;
    	Display *dpy;
    
    	use_shape = 0;
    	dpy = GDK_WINDOW_XDISPLAY(mainwin->window);
    	if ( XShapeQueryExtension(dpy, &ev_base, &er_base) ) {
    		use_shape = 1;
    	}
    	ResizeShape();
    printf("Shape extension%s available\n", use_shape ? "" : " not");
    }
    
    #endif /* USE_SHAPE */
    
    
    /* Event handlers -- the configure_event handler is very important! */
    
    gint
    button_press_event (GtkWidget *widget,  GdkEventButton *event)
    {
    	SDL_Rect rect;
    
    	rect.x = event->x-1;
    	rect.y = event->y-1;
    	rect.w = 2;
    	rect.h = 2;
    	SDL_FillRect(screen, &rect, SDL_MapRGB(screen->format, 255, 255, 255));
    	SDL_UpdateRects(screen, 1, &rect);
    
    	return TRUE ;
    }
    
    gint
    configure_event (GtkWidget *widget, GdkEventConfigure *event)
    {
    	screen = SDL_SetVideoMode(event->width, event->height, 0, 0);
    #ifdef USE_XSHAPE
    	ResizeShape();
    #endif
    	return TRUE ;
    }
    
    gint
    delete_event (GtkWidget *widget, GdkEventConfigure *event)
    {
    	gtk_main_quit();
    	return TRUE ;
    }
    
    /* Idle function -- called when GTk isn't busy */
    gint
    idle_loop (gpointer data)
    {
    	int x, y;
    
    	/* Make a random spot black (well, color 0 anyway :) */
    	x = rand()%screen->w;
    	y = rand()%screen->h;
    	switch (screen->format->BytesPerPixel) {
    		case 1:
    			*((Uint8 *)screen->pixels+y*screen->pitch+x) = 0;
    			break;
    		case 2:
    			*((Uint16 *)screen->pixels+y*screen->pitch/2+x) = 0;
    			break;
    		case 3:  /* Yuck... */
    			((Uint8 *)screen->pixels+y*screen->pitch+x)[0] = 0;
    			((Uint8 *)screen->pixels+y*screen->pitch+x)[1] = 0;
    			((Uint8 *)screen->pixels+y*screen->pitch+x)[2] = 0;
    			break;
    		case 4:
    			*((Uint32 *)screen->pixels+y*screen->pitch/4+x) = 0;
    			break;
    	}
    #ifdef USE_XSHAPE
    	ShapeWindow();
    #endif
    	SDL_UpdateRect(screen, x, y, 1, 1);
    	return TRUE ;
    }
    
    /* Menu callbacks */
    
    void NewScreen(gpointer cb_data, guint cb_action, GtkWidget *widget)
    {
    	SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 255, 255, 255));
    	SDL_UpdateRect(screen, 0, 0, 0, 0);
    }
    
    void QuitGame(gpointer callback_data, guint callback_action, GtkWidget *widget)
    {
    	gtk_main_quit();
    }
    
    
    static GtkItemFactoryEntry menu_items[] = {
       {"/_File",			NULL,		0,		0, "<Branch>" },
       {"/_File/_New",		NULL,		NewScreen,	0 },
       {"/_File/_Quit",		"<control>Q",	QuitGame,	0 },
    };
    
    void CreateMenus(GtkWidget *window)
    {
    	GtkAccelGroup *accel_group;
    	GtkItemFactory *item_factory;
    	GtkWidget *box1;
    
    	accel_group = gtk_accel_group_new();
    	item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<menu>", accel_group);
    	gtk_item_factory_create_items(item_factory, 3, menu_items, NULL);
    	gtk_accel_group_attach(accel_group, GTK_OBJECT(window));
    	gtk_window_set_title(GTK_WINDOW(window), "Star Field");
    	gtk_container_border_width(GTK_CONTAINER(window), 0);
    	box1 = gtk_vbox_new(FALSE, 0);
    	gtk_container_add(GTK_CONTAINER(window), box1);
    	gtk_box_pack_start(GTK_BOX(box1), gtk_item_factory_get_widget(item_factory, "<menu>"), FALSE, FALSE, 0);
    	gtk_widget_show_all(window);
    }
    
    int main(int argc, char *argv[])
    {
    	gtk_init(&argc, &argv);
    
    	/* Create a main window */
    	mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    	gtk_widget_set_usize(mainwin, WINSIZEX, WINSIZEY);
    	gtk_widget_realize(mainwin);
    
    	/* Add event handlers -- the configure_event handler is important! */
    	gtk_widget_add_events(mainwin, GDK_BUTTON_PRESS_MASK);
    	gtk_signal_connect(GTK_OBJECT(mainwin), "configure_event", GTK_SIGNAL_FUNC(configure_event), 0);
    	gtk_signal_connect(GTK_OBJECT(mainwin), "button_press_event", GTK_SIGNAL_FUNC(button_press_event), 0);
    	gtk_signal_connect(GTK_OBJECT(mainwin), "delete_event", GTK_SIGNAL_FUNC(delete_event), 0);
    
    	/* Hack to get SDL to use GTK window */
    	{ char SDL_windowhack[32];
    		sprintf(SDL_windowhack,"SDL_WINDOWID=%ld",
    			GDK_WINDOW_XWINDOW(mainwin->window));
    		putenv(SDL_windowhack);
    	}
    
    	/* Initialize SDL */
    	if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
    		fprintf(stderr,"Couldn't initialize SDL: %s\n",SDL_GetError());
    		gtk_main_quit();
    	}
    
    	screen = SDL_SetVideoMode(WINSIZEX, WINSIZEY, 0, 0);
    
    #ifdef USE_XSHAPE
    	/* Check for the X shaped window extension */
    	CheckShape();
    #endif
    
    	/* Create menus for the main window */
    	CreateMenus( mainwin );
    
    	/* Add an idle function -- game main loop? */
    	srand(time(NULL));
    	gtk_idle_add(idle_loop, mainwin);
    
    	/* The last thing to get called */
    	gtk_main();
    	SDL_Quit();
    	return 0;
    }
    Ответ написан
  • Как удалить в source tree?

    2ord
    @2ord
    Если все изменения были локальными (без git push), то
    git reset --hard <last_good_commit_hash>

    Неясно, включая ли Merge branch 'dev' или нет?
    Ответ написан
  • Самый быстрый веб-сервер php для windows?

    2ord
    @2ord
    Думаю, связка nginx + PHP-FPM будет быстрой.
    nginx - для отдачи статики
    PHP-FPM - для отдачи контента веб-приложения.
    allthelittlebits.com/nginx-php5-fpm-mysql-setup-windows
    Ответ написан
    3 комментария
  • Ребенок-Кодер или программист?

    2ord
    @2ord
    Дети лучше всего воспринимают мир в игровой форме.
    В детстве очень любил возиться с конструкторами.
    Сначала был такой
    1424717605_konstruktor_nomer_odin.jpg
    Затем типа такого
    merkur_m8.jpg
    Сегодня такие нет в продаже непросто найти, наверно.
    Восемь альтернатив конструкторам LEGO

    А книги должны быть в виде примеров, которые побуждают ребёнка к действию, чтобы не ограничивал своё творчество.
    Насчёт алгоритмов и мудрости - хорошо пишет Паронджанов В. Д. Для обзора можно скачать его отсканированную книгу "Почему мудрец похож на обезьяну, или Парадоксальная энциклопедия современной мудрости." (Дано научно-популярное описание языка ДРАКОН. — С. 297 – 434) отсюда.
    Краткое описание языка ДРАКОН дано здесь.
    ris89.png?w=900&tok=7198de
    Я считаю, что этот визуальный язык вполне может поставить правильное мышление не только у ребёнка, но и у взрослого.

    Компы никуда не убегут от ребёнка, так как это реальность сегодня. А вот заранее приучать к программированию я бы не советовал. Может, он сможет стать талантливым инженером или экономистом, юристом и т.д.?
    Ответ написан
    2 комментария
  • Не могу присвоить значение полю модели Rails?

    2ord
    @2ord
    Это нововведение RoR версии 4.
    Читай про строгие параметры.
    Ответ написан
    Комментировать
  • Эстонские буквы в Mysql базе - какая кодировка?

    2ord
    @2ord
    Больше похоже на экранирование символов для HTML (URL-encoding) нежели проблему с кодировками СУБД.
    &amp;

    ä stored as &#228; value is encoded in database

    P.S.
    Кстати, забавно Тостер обрабатывает HTML обозначения, даже не экранирует.
    Ответ написан
    Комментировать