вторник, 14 марта 2017 г.

Руссифиация MSYS или старых версий git под windows

 Актуально для Windows XP и др. , которые не имеют официальной поддержки, так как на сегодня, официальная версия git у меня периодически "вылетает" (падает), поэтому поставил старый git, какой нашел.

Создать в директории ~ (это директория пользователя в windows) файлы .bashrc и .inputrc.

touch ~/.bashrc
touch ~/.inputrc

 Для выполнения команд типа ls в ~/.bashrc:
 ls_git() {
    ls $@ | cat
}
alias ls=ls_git

Можно и без редактирования ~/.bashrc добиться кириллических имен, например командой:
ls --show-control-chars

Можно как вариант взять /etc/profile.d из новой версии и вставить в git старой версии /etc

Для ввода кириллицы, ~/.inputrc:
set output-meta on
set convert-meta off

Или их исправить в
/etc/inputrc



Проверялось на Git :
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/utf8-git-on-windows/Git-1.7.3.2-utf8-20110213.exe

В файле из  %git%/etc/gitconfig в секции [core] прописал :
    quotepath = false

Там же можно и другие параметры Git прописывать.



вторник, 28 июня 2016 г.

Linux в кармане

Образ для записи на флешку LUbuntu:
https://yadi.sk/d/sb9LFChRsqh7M
Пароль для chedman: 1977!72

Можно записать:   http://www.alexpage.de/download/usbit/usbit.zip

Для изменения параметров файловых систем, редактируется /etc/fstab , например, автоматического монтирования раздела с NTFS, куда будут писаться данные, чтоб продлить по возможности ресурс флешки.

Для обращения к данным флешки из под Windows можно установить : http://jaist.dl.sourceforge.net/project/ext2fsd/Ext2fsd/0.66/Ext2Fsd-0.66.exe

среда, 11 мая 2016 г.

Подключение DLL (Си) к VBA


 Код на СИ

/// Файл main.h
#ifndef __MAIN_H__
#define __MAIN_H__


#include <windows.h>
#include <stdint.h>

/*  To use this exported function of dll, include this header
 *  in your project.
 */

#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport)
#else
    #define DLL_EXPORT __declspec(dllimport)
#endif

#ifdef __cplusplus
extern "C"
{
#endif

void __stdcall DLL_EXPORT SomeFunction(const LPCSTR sometext);

#ifdef __cplusplus
}
#endif

#endif // __MAIN_H__


/// Файл main.c
#include "main.h"

// a sample exported function
void __stdcall DLL_EXPORT SomeFunction(const LPCSTR sometext)
{
    MessageBoxA(0, sometext, "DLL Message", MB_OK | MB_ICONINFORMATION);
}


'Код в VBA модуле:
Declare Sub SomeFunction Lib "dllTestVBA.dll" _
Alias "SomeFunction@4" (ByVal msg As String)

' SomeFunction@4 - это смотреть в dllTestVBA.def
'
Sub tt()
     SomeFunction "gfgfg"
End Sub

вторник, 29 января 2013 г.

Глючит wxARG 1.2.0-rc3

1. Не создается новая запись
- нужно в с генерированных файлах
"bool newRow=true;"
заменить на
"newRow=true;"
Альтернативное решение, более универсальное, изменить шаблон для этого
- нужно в файле wxActiveRecord.ctmp
"bool newRow=true;"
заменить на
"newRow=true;"
2. Не получается изменять и вставлять новые записи
- нужно в с генерированных файлах
"(,"
заменить на
"("
- нужно в с генерированных файлах
"UPDATE %s SET ,"
заменить на
"UPDATE %s SET "
3.
BUG: Глюк wxARG 1.2.0-rc3 & Firebird

четверг, 17 мая 2012 г.

Решение задачки на Си


Решил задачку для студента Пермского политеха, вот ниже решение без матчасти и в упрощенной постановке (чтоб не показывать как нашел точку пересечения эллипса с окружностью, в этом соль решения). Определяем принадлежность точки областям А или B.

#include <stdlib.h>
#include <stdio.h>    // чтоб обеспечить ввод/вывод
#include <math.h>     // чтоб использовать стандартные математические функции
#include <windows.h> // Чтоб русифицировать вывод в консоль, в окне консоли шрифт поменять

int blnCircle(double x,double  y,double R,double xo,double yo );
int blnEllips(double x,double  y,double a,double b,double xe,double ye);

int main()
{
    //Чтоб русифицировать вывод в консоль, в окне Свойства консоли шрифт поменять на TT
    // в аргументах кодировка файла для UTF-8 ~ 65001, а для cp1251 ~ 1251
    SetConsoleCP(65001);
    SetConsoleOutputCP(65001);

    double R,x,y,a,b,xo,yo,xe,ye;
    double t1,t2,c;     // Промежут. данные для расчета центра эллипса

    do
    {
        printf("Введите радиус окружности (R>=15):\n");
        scanf("%lf",&R);
    }
    while(R<15);

    do
    {
        printf("Введите значения полуосей эллипса a и b (b>a, 2b>=40 ):\n");
        scanf("%lf%lf",&a ,&b) ;
    }
    while(b<=a || 2.0*b<40);

    printf("Введите координаты точки для проверки, принадлежности её областям A или B\n");
    scanf("%lf%lf",&x ,&y) ;

    /// Определим центр окружности
    xo=(38-sqrtf(-900+60*R));
    yo=(R-30);

    /// Определим центр эллипса
    c=sqrt(pow(b,2)-pow(a,2));
    t1=pow(40.0-b+c,2);
    t2=pow(c-40+b,2);
    xe=9.0 - sqrt((4.0*t1*t2-pow(t1+t2-4*b*b,2))/(-16.0*pow(b,2)));
    ye=40.0-b;




    if( blnEllips(x,y,a,b,xe,ye) && x<=0 && y>=9 && !blnCircle(x,y,R,xo,yo))
        printf ("Точка принадлежит области A\n");
    else if(!blnEllips(x,y,a,b,xe,ye) && blnCircle(x,y,R,xo,yo) && y>=0 && x>=0 && y<=9)
        printf("Точка принадлежит области B\n");
    else
        printf("Точка не принадлежит областям A и B\n");

    system("pause"); // Останов программы под Windows, чтоб успеть результат посмотреть
    return 0;
}


/// Проверка принадлежности точки области ограниченой окружностью и получения её цнтра
int blnCircle(double x,double  y,double R,double xo,double yo)
{
    return (pow((x-xo),2)+pow(y-yo,2)<=pow(R,2));
}

/// Проверка принадлежности точки области внутри эллипса и его центр
int blnEllips(double x,double y,double a,double b,double xe,double ye)
{
    return ( pow(x-xe,2)/pow(a,2)+pow(y-ye,2)/pow(b,2)<=1 );
}


среда, 22 февраля 2012 г.

Эллипсис в C/C++

Эллипсис (многоточие в описании функции, там где аргументы) может приводить к ошибкам сегментации памяти. Если, например,


//Функция, просто выводит один аргумент за другим
void f(char *s1, ...)
{
char **cp = &s1; //--адрес первого указателя
while (*cp)
{ std::cout << (*cp) << std::endl;
cp++; //-- перемещаемся на следующий аргумент
}
}

// ...
f("First ","Two ","Three ", 0); // - это правильный вызов, 0 - признак конца списка аргументов
// ...
f("First ","Two ","Three "); // - это ошибочный вызов, дающий ошибку сегментации
// ...


Вот значит, что VB с людьми делает - появляются вредные привычки в программировании.

среда, 7 декабря 2011 г.

Алгоритмическое мышление (заповеди программиста)

Алгоритмическое мышление - это слабое место, многих начинающих программировать людей. Тренировать его можно, просто решая задачки, головоломки, играя в шахматы и др. Математика помогает в этом, безусловно.
В общем-то арсенал конструкций для составления алгоритмов не велик:
- следование;
- ветвление;
- циклы (с предусловием, с постусловием и параметризованный).
Немного математики, знание функций и операций для конкретной среды программирования и на выходе получаем программки, при условии наличия и использования мозга.
Для языка Си основные моменты, необходимые для создания простых консольных программ, можно при желании разместить на одной странице.
Алгоритмическое мышление - это основной инструмент программиста. Этот аппарат, надо холить и лилееть, материальным носителем его является "серое вещество", следовательно мозги надо держать в тонусе и бережно к ним относится. В некотором смысле, мозг работает как мышца, ей нужна тренировка, отдых и питание. Пагубны для "серого вещества" алкоголь и табак, а так же их аналоги (наркотик, кальян, психотропные лекарства и др.).
В здоровом теле - здоровый дух.
Есть и другие факторы, мешающие раскрытию потенциала "серого вещества", например, СМИ (особенно если они выполняют, чей-то политический или др. заказ), развлекательные шоу и др., по сути, они создают информационный шум, будоража воображение, отвлекая и препятствуя ясности мышления.
Понятно, что для того, чтобы преуспеть в программировании, да и в других областях, где нужно мышление как основной инструмент, надо придерживаться некоторых правил, т. е. соответствующего образа жизни. Подозреваю, что эти правила будут иметь некоторое существенное сходство с уставом монастыря, в части, которая связана с духовным развитием.
Хорошо бы выработать десятку правил, которые оберегали бы тонкую нервную организацию программистов (типа заповедей программиста).