регистрация в твиттер
Re: регистрация в твиттер
понятно но я просто хочу постараться сделать пусть не в срок но понять основную идею этого у меня есть наметки по интерфейсу андроид по потокам по си да приложение нужно но я просто хочу понять как его делать и запустить хотя бы тот проект который на хабре для наглядности
Re: регистрация в твиттер
Я никогда в жизни не поверю что вы имеете хоть малейшее представление о программировании на С или многопоточном программировании и задаете вопросы не просто дилетента а человека который вообще не понимает о чем идет речь. Попробуйте почитать книжку "Java concurrency in practice" и полностью пройти элементарный курс по С - http://c.learncodethehardway.org/book/yura91 писал(а):понятно но я просто хочу постараться сделать пусть не в срок но понять основную идею этого у меня есть наметки по интерфейсу андроид по потокам по си да приложение нужно но я просто хочу понять как его делать и запустить хотя бы тот проект который на хабре для наглядности
Потом просто откройте этот форум и почитайте свои вопросы. Вы очень сильно плаваете в основах и это проблема просто потому, что работая с тем же твитер вы сейчас находитесь на эелементарной стадии - подключении библиотеки и авторизации, это все уже сделали за вас, дале придется писать код самостоятельно.
если вы считаете, что знаете Си, попробуйте разобраться что делает этот ужасно примитивный пример кода:
[syntax=c]
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>
#include <dos.h>
#include <string.h>
void initialize_graphics_mode();
int get_key();
void draw();
union REGS i, o;
main()
{
int key, i = 0, xpos, ypos, button;
char arr[200], temp[5], *ptr;
char a[] = "C:\\Progra~1\\Mozill~1\\firefox ";
strcpy(arr,a);
i = strlen(a);
initialize_graphics_mode();
draw();
while(1)
{
if(kbhit())
key = get_key();
if((key>=97&&key<=122)||(key>=65&&key<=90)||key==46||key==47||key==63)
{
arr = key;
sprintf(temp,"%c",arr);
outtext(temp);
if(getx()>470)
{
clearviewport();
moveto(5,2);
}
i++;
}
else if ( key == 13 )
{
arr = '\0';
system(arr);
break;
}
else if ( key == 27 )
{
closegraph();
exit(EXIT_SUCCESS);
}
if(button==1&&xpos>=150&&xpos<=480&&ypos>=300&&ypos<=330)
{
system("C:\\Progra~1\\Mozill~1\\firefox startandroid.ru/ru/");
break;
}
key = -1;
}
closegraph();
return 0;
}
void initialize_graphics_mode()
{
int gd = DETECT, gm, errorcode;
initgraph(&gd,&gm,"C:\\TC\\BGI");
errorcode = graphresult();
if( errorcode != grOk )
{
printf("Graphics error : %s\n",grapherrormsg(errorcode));
printf("Press any key to exit...\n");
getch();
exit(EXIT_FAILURE);
}
}
int get_key()
{
i.h.ah = 0;
int86(22,&i,&o);
return( o.h.al );
}
void draw()
{
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
outtextxy(275,11,"Web Browser");
outtextxy(155,451,"<a href="http://startandroid.ru/ru/"">startandroid.ru/ru"</a>);
outtextxy(5,105,"Enter URL : ");
rectangle(120,100,600,130);
setviewport(121,101,599,129,1);
moveto(5,1);
}
[/syntax]

Re: регистрация в твиттер
Код: Выделить всё
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>
#include <dos.h>
#include <string.h>
подключаете библиотеки
void initialize_graphics_mode(); прототип функции вашей
int get_key();тоже прототип
void draw();прототип
union REGS i, o;глобальные переменные класса union
main() вход в программу
{
int key, i = 0, xpos, ypos, button;целые переменные
char arr[200], temp[5], *ptr;массивы чаров и указатель на чар
char a[] = "C:\\Progra~1\\Mozill~1\\firefox "; строка
strcpy(arr,a);копируете строку в массив
i = strlen(a);узнаете размер строки
initialize_graphics_mode();вызываете функцию
draw();вызываете вашу функцию для графики
while(1) бесконечный цикл
{
if(kbhit())
key = get_key();получаете целое
if((key>=97&&key<=122)||(key>=65&&key<=90)||key==46||key==47||key==63)
{если целое находится в заданных пределах
arr[i] = key;
помещаете его в последний элемент массива со строкой
sprintf(temp,"%c",arr[i]); выводите темп и последний элемент массива
outtext(temp);системный вывод
if(getx()>470)
{
clearviewport();
moveto(5,2);
}
i++;инкремент цикла
}
else if ( key == 13 )
{
arr[i] = '\0';
system(arr);
break;
}
else if ( key == 27 )
{
closegraph();
exit(EXIT_SUCCESS);
}
if(button==1&&xpos>=150&&xpos<=480&&ypos>=300&&ypos<=330)
{
system("C:\\Progra~1\\Mozill~1\\firefox startandroid.ru/ru/");
break;
}
key = -1;
}
closegraph();завершение графики
return 0;завершение программы
}
void initialize_graphics_mode()
{
int gd = DETECT, gm, errorcode;
initgraph(&gd,&gm,"C:\\TC\\BGI");
errorcode = graphresult();
if( errorcode != grOk )
{
printf("Graphics error : %s\n",grapherrormsg(errorcode));
printf("Press any key to exit...\n");
getch();
exit(EXIT_FAILURE);
}
}
int get_key()
{
i.h.ah = 0;
int86(22,&i,&o);
return( o.h.al );
}
void draw()
{
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
outtextxy(275,11,"Web Browser");
outtextxy(155,451,"<a href="http://startandroid.ru/ru/"">startandroid.ru/ru"</a>);
outtextxy(5,105,"Enter URL : ");
rectangle(120,100,600,130);
setviewport(121,101,599,129,1);
moveto(5,1);
Последний раз редактировалось yura91 30 авг 2014, 19:11, всего редактировалось 1 раз.
Re: регистрация в твиттер
ну вот некоторые стандартные функции не знаю но все знать нельзя их описание можно в интернете искать getch знаю ждет ввод с клавиатуры а по андроиду все на английском почему то ну я немного знаю си как вы считаете??
Re: регистрация в твиттер
rectangle тоже задает прямоугольник
Re: регистрация в твиттер
вы используете графическую библиотеку си и программно рисуете фигуры в окне если быть кратким верно??exit завершает программу clearviewport();незнаю settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);сдесь вы задаете стиль текста который потом выводите
Последний раз редактировалось yura91 30 авг 2014, 18:40, всего редактировалось 1 раз.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: регистрация в твиттер
Вам самому ничего глаз не режет??
Re: регистрация в твиттер
а что должно резать ??
Re: регистрация в твиттер
только клоз граф это завершение рисования на графике closegraph();
Re: регистрация в твиттер
хотя код действительно вызвал некоторые затруднения до конца так и не смог его еще разобрать есть незнакомые функции
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: регистрация в твиттер
Посмотрите как красиво выглядит код у altwin и как ужасно он выглядит у Вас (я про читабельность). Отредактируйте сообщение и добавьте код в соответствующие теги.yura91 писал(а):а что должно резать ??
Re: регистрация в твиттер
и книгу посмотрю полезно будет а есть еще какие нибудь книги статьи не важен язык где подробно описывается процесс авторизации в твиттере и вообще через андроид можете дать ссылку мне интересно ознакомится??А CALLBACK URL это ссылка на то активити в которое мы возвращаемся после авторизации в твиттере верно??щас отредактирую
Re: регистрация в твиттер
вот отредактировал а по поводу Callback url это ведь ссылка по которой мы возвращаемся в приложение то есть активити которое соответствующим образом прописано в манифесте и мы через callback в это активити попадаем верно??
Re: регистрация в твиттер
Мне абсолютно не интересно знакомы ли вам языковые конструкции - это вообще никакого отношения к программированию не имеет, любой синтаксис изучается за 3 дня. Во первых в С - нет классов. Во вторых никакие библиотеки никто не подключает, это заголовочные файлы стандартной библиотеки. Причем это принципиально важно. Чтение кода подразумевает понимание того, что происходит, а не построчный разбор вам нужно ответить на вопрос зачем а не что. Об этом я вам и пытаюсь сказать, синтаксис самого языка программирования никому не нужен - это мелочь не достойная внимания. В программировании есть 2 фундаментальные вещи - это структуры данных и алгоритмы. Все остальное вокруг - взаимодействие этих данных через алгоритмы. На сегодняшнем уровне развития никто не реализует взаимодействие с нуля, конечно есть библиотеки но чтобы эти библиотеки работали в первую очередь нужны единые стандарты, не для языка программирования а для реализации обмена данными, по сути стандарт - это единый алгоритм. Вот именно стандартном в том числе протоколы и являются. Т.е. для того, чтобы быть программистом - нужно знать структуры данных и алгоритмы решения классических задач, нужно знать основные и уметь ориентироваться в остальных поротоколах взаимодействия ( и кстати читать их документацию, для чего и нужен английский ). Язык программирования же это не ключевые слова и функции, а инструмент использующий определенные подходы в организации взаимодействия алгоритмов управляющих данными, ООП или процедуры принципиально важно и изучать нужно не синтаксис, а методы решения задач в контексте данной технологии. Двигаться вы должны от обратного т.е. у вас есть задача взаимодействия с внешним сервисом, что вам для этого нужно?yura91 писал(а):хотя код действительно вызвал некоторые затруднения до конца так и не смог его еще разобрать есть незнакомые функции
1. Изучить технологию с помощью который вы планируете реализацию, в данном случае java и методы решения задач тут - это ООП. java строит многоуровневую абстракцию и вам нужно идеальное представление о доступных средствах, т.е. наследовании, полиморфизме, инкапсуляции и т.д. и не просто прочитать что это, а понять зачем.
2. Вы должны изучить документацию клиента (тогоже twitter) и определить методы взаимодействия. Каждый используемый протокол вы просто обязанны досконально изучить, особенно если это касается тех, которые используются буквально в каждом приложении вокруг. Это даст вам не более, чем осознанное использование того инструмента, который вам предлагают разработчики twitter.
Эти два пункта - минимум необходимый вам для начала обдумывания архитектуры приложения, т.е. опять используемых структур данных и их взаимодействие. Если в Си - это нискоуровневое перемещение данных из одной области памяти в другую, то java дает вам возможность думать не о реализации, а о функционале, но именно поэтому вам придется столько всего изучать предварительно. Си - простой потому, что не умеет ничего, вам нужно строить все самому, в java же уже построили для вас фундамент, но перед тем как браться за него, придется учиться им пользоваться.
Ваша проблема в простой вещи - вы торопитесь. Каждый вопрос возникающий сегодня - это повод провести доскональное исследование предмета. Забудьте про библиотеки и android вообще. Возьмите и напишите браузер. Потом прочтите простую книжку http://www.ozon.ru/context/detail/id/6722233/ и перепешите свой код. Единственный способ понять -да это опыт, нужно брать и делать, но делать нужно четко понимая что и зачем. Вы не должны думать о методе getInstance(), лучше задайте вопрос почему используется Синглтон. Но для этого нужно знать, что это такое. Чем выше уровень абстракции в языке, тем больше требоваия на вход. Вы можете задавать вопросы и пытаться разбираться по ходу, но это глупо, вы же пытаетесь набить шишки, которые уже сотни раз за вас набили другие. Вам нужно потратить 10 лет на то, чтобы написать первое приложение за которое можно будет заплатить хоть не много денег? Почему вы не хотите использовать опыт миллионов людей? К томуже если вы путаетесь в основах и пытаетесь максимально быстро пройти в перед по принципу лишь бы работало, что вы планируете делать завтра, когда работать оно перестанет? Я могу легко вам ответить, вы будете платить очень большие деньги за то, чтобы оно снова заработало.
P.S. в общем все это лирика... для того чтобы понять что делает код - просто запустите его и приведенный в примере не делает ничего особенного, это элементарный браузер. Если вы хотите быть нужным на рынке или чтобы вашими приложениями пользовались - учите теорию. Практика без теории не стоит ничего. И если вы хотите стать программистом - учите английский, другого пути нет, не ближайшие лет 50 не будет.

Re: регистрация в твиттер
ну так я и имею ввиду стандартные библиотеки про то что в си нет классов знаю не знаю просто что такое union
Re: регистрация в твиттер
Я третий раз даю вам эту ссылкуyura91 писал(а):и книгу посмотрю полезно будет а есть еще какие нибудь книги статьи не важен язык где подробно описывается процесс авторизации в твиттере и вообще через андроид можете дать ссылку мне интересно ознакомится??А CALLBACK URL это ссылка на то активити в которое мы возвращаемся после авторизации в твиттере верно??щас отредактирую
Access Token Request
twitter использует протокол описанный именно в этом документе. Т.е. этот текст - фундамент не только для twittera но и для "мордокниги", "vk.com" и 95% других популярных сегодня сервисов.

Re: регистрация в твиттер
Т.е. вы считаете что знаете язык, когда даже в ключевых вещах путаетесь? Не торопитесь, в том, чтобы не знать чего -то нет ничего плохого. Если бы я хотел, чтобы вы мне рассказали что делается в строчке кода, то спросил бы о том что будет в переменной тут:yura91 писал(а):ну так я и имею ввиду стандартные библиотеки про то что в си нет классов знаю не знаю просто что такое union
[syntax=c]
ihi = y[0]>y[1] ? (inhi=1,0) : (inhi=0,1);
// а еще лучше тут
unsigned int reverse(register unsigned int x)
{
x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
return((x >> 16) | (x << 16));
}
[/syntax]
или пример из реального кода на java (java.util.concurrent.ConcurrentHashMap):
[syntax=java5]return ((h << 7) - h + (h >>> 9) + (h >>> 17));[/syntax]
потому не брезгуйте простыми вещами, основы на то и основы чтобы в них не путаться... знать их нужно обязательно и знать хорошо.

Re: регистрация в твиттер
хорошо спасибо и еще такой вопрос про многопоточность сдесь на стартандроиде я видел урок в котором в сервисе создавался новый поток чтобы не перегружать основной для использования метода который определен в самом сервисе говорят это нужно что бы не перегружать поток в котором работает пользовательский интерфейс Так вот зачем это нужно если сервис и так работает в отдельном фоновом потоке?? можете обьяснить пожалуйста??
Re: регистрация в твиттер
просто интересно могудать ссылку даже в каком уроке?обьясните??
Re: регистрация в твиттер
Это нужно смотреть на конкретном примере, какой урок? К примеру если UI получает данные из сервиса, а вы запускаете в нем к примеру 100 млн. запросов, то UI не получит ничего до тех пор, пока не выполнится последний запрос, создавая же там в сервисе новый поток вы можете выполнять запросы группами к примеру по 100 штук практически одновременно и возвращать результат почти без задержек.yura91 писал(а):хорошо спасибо и еще такой вопрос про многопоточность сдесь на стартандроиде я видел урок в котором в сервисе создавался новый поток чтобы не перегружать основной для использования метода который определен в самом сервисе говорят это нужно что бы не перегружать поток в котором работает пользовательский интерфейс Так вот зачем это нужно если сервис и так работает в отдельном фоновом потоке?? можете обьяснить пожалуйста??

