• Как устроен сервис idonethis.com?

    FanKiLL
    @FanKiLL
    В чём проблема сделать такое? Судя по всему написано на django. Но не суть.
    Допустим у нас рельсы. Ставим какой нибудь https://github.com/titanous/mailman и проверяем почту каждые N времени. Берём пришедшее письмо, берём оттуда почту и смотрим у себя в базе юзера с таким email - если есть, берём текст письма, и заносим в календарь. Например каждая новая строка это 1 выполненная задача. Если такого юзера нет, ничего не делаем, удаляем письмо к примеру.

    Можно идти дальше и например парсить тему письма если там например есть такое [work] [development] заносим задачи в календарь или категории work и development.

    Морда сайта и сам мониторинг emal может быть вообще на разных языках. Морду можно на чём угодно, бота для мониторинга, можно на java например написать, что бы быстрее было.

    Хз стоит ли тут imap смотреть постоянно или по pop3 забирать раз например в минуту - уже потом можно переписать или изменить.

    Не говорю, что легко написать, но за неделю-две можно сделать первый прототип. Правда я бы не заморачивался с календарём как том сервисе, а делал бы категории - так намного понятней.
    Но если есть дизайнер, не проблема вывести в виде календаря - из меня просто хреновый дизайнер.
    Ответ написан
  • Потоки, NullPointerException, Java, ЧЯДНТ?

    FanKiLL
    @FanKiLL
    Во первых проверить если у TextArea не выставлен setEditable(false);
    Во вторых у TextArea есть метод append который добавит текст к уже имеющемся.
    В данном случае конструкция jChatBox.setText(jChatBox.getText() + line) не нужна меняйте на append плюс надеюсь вы к строкам добавляете "\n"
    иначе будет каша.
    В третьих почитайте как работать с TextArea там немного всё подругому чем с обычными текстовыми контролами

    Хз, что ещё написать... Без кода трудно сказать почему null. И вообще что именно null TextArea или line который вы туда передаёте? Инфы мало.
    Ответ написан
    Комментировать
  • Как избавиться конфликта зависимостей в maven?

    FanKiLL
    @FanKiLL
    Maven Optional Dependencies and Dependency Exclusions

    upd:
    А вообще это вам наверно не поможет, можно попробовать обмануть мавен.
    Сделать как написано по ссылке что я дал, убрать версию 1.3
    <dependency>
        <groupId>библиотека С</groupId>
        <artifactId>её имя</artifactId>
        <version>версия</version>
          <exclusions>
            <exclusion> 
              <groupId>библиотека</groupId>
              <artifactId>её id</artifactId>
            </exclusion>
    </dependency>


    Скачать версию 1.3 и установить её руками под другим groupId в локальный репозиторий например
    mvn install:install-file -Dfile=toster.jar 
        -DgroupId=ru.toster -DartifactId=toster-api -Dversion=0.0.1 
        -Dpackaging=jar


    и потом добавить в pom
    <dependency>
        <groupId>ru.toster</groupId>
        <artifactId>toster-api</artifactId>
        <version>0.0.1</version>
    </dependency>


    Тогда по идее обе библиотеки попадут в classpath.
    Ответ написан
  • Как обработать ошибку подключения при отсутствии интернета на андроиде?

    FanKiLL
    @FanKiLL
    public class NetworkManager {
    
        public static boolean isNetworkAvailable(Context context) {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = cm.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isConnected()) {
                return true;
            } else {
                return false;
            }
        }
    }


    и перед каждым запросом проверять сеть

    if (NetworkManager.isNetworkAvailable(context)) {
        // делаем спокойно запрос
    } else {
        // если сети нет показываем Тост или 
        // кидаем на активити с красивым дизайном где просим сделать реконнект
    }


    Требует пермишина, в манифест добавляем пермишин

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    Ответ написан
    Комментировать
  • Проблемы на эмуляторе Genymotion, при попытки вызвать локально развёрнутый сервис. Какой ip использовать при подключении?

    FanKiLL
    @FanKiLL
    Потому что обращение к localhost в андроид вы обращаетесь к localhost'у на самом андроид.
    На своей машине если на винде откройте cdm и выполните команду ipconfig там будет ip вашей машины, который и нужно подставить вместо локалхоста
    Ответ написан
  • Какие есть сервисы по Java tips?

    FanKiLL
    @FanKiLL
    www.journaldev.com - очень хорошие статьи про патерны и много чего хорошоего. Публикуют не часто, но там уже достаточно инфы.
    www.javacodegeeks.com - Публикуют практически каждый день что то, бывает даже слишком много.
    tutorials.jenkov.com - Товарищ публикует много туториалов, у него очень много по java.
    www.mkyong.com - Довольно часто публикует разные How to..
    Ответ написан
    Комментировать
  • На какие темы написать статьи по Ruby/Rails?

    FanKiLL
    @FanKiLL
    В поддержку пожелания выше про API - хотелось бы почитать про то как правильно делать upload файлов через api. Например как это делает github?

    Где хранить залитые файлы и что с ними делать при обновлении приложения или при переносе на другой сервер.
    Ответ написан
  • Java Web API - какие технологии/средства/инструменты использовать?

    FanKiLL
    @FanKiLL
    JAX-RS 2.0 собственно для этого и предназначен.
    Но так же на spring mvc можно сделать, там тоже для этого всё есть - например.
    Ответ написан
    Комментировать
  • Как реализовать "Register with Facebook" аналогично Instagram на server-side?

    FanKiLL
    @FanKiLL
    Пользователь нажимает на кнопку, вы берёте id юзера в фейсбуке он уникальный и другую инфу, так же можете взять access_token если хотите делать какие то запросы в фейсбук.

    Далее, отсылаете id юзера на сервер он уникальный помните, смотрим если есть юзер с таким id от фейсбука. Если нет, значит - можно зарегестрировать юзера, делаем юзера и привязываем этот facebook id к нему. Всё теперь юзер зарегестрирован и к нему привязан facebook id.

    Если он нажимает на кнопку в приложении - вы отсылаете facebook id и юзер с таким facebook id на сервере находится, можно считать это за логин и пропустить юзера в ваше приложение.

    На пятый пункт, нет пароль передавать нельзя, при регистрации или логине (лучше при логине) генерируете юзеру уже свой access_token с которым он может обращаться к вашему серверу.
    Свой access_token выдавать при логине или после регистрации.

    Теперь когда у юзера есть access_token от вашего сервера, он может делать запросы к вашему api серверу. Это значит, что он должен присылать этот токен с каждым обращением к вашему серверу, как он будет это делать зависит от дизайна вашего api. У фейсбука это как параметр в URL.
    Я предпочитаю, чтобы access_token присылали в http хедерах.

    Примерно, так... Одним ответом тут не отписаться( Спрашивайте ответим.
    Ответ написан
    7 комментариев
  • [Rails] Как организовать ежемесячное выставление счета?

    FanKiLL
    @FanKiLL
    before_action :update_last_seen

    def update_last_seen
      if current_user
        if (Time.now - 3.hours) >= current_user.last_seen
          current_user.last_seen = Time.now
        current_user.save
      end
    end


    Вот так у меня в одном проекте проверялось и обновлялось когда последний раз человек был на
    сайте, точность важна не была, поэтому + 3 часа Time.now - 3.hours
    Но вы можете поменять на день и т.д. Но это сработает только если человек заходит на сайт.
    Повесить этот before_action в ApplicationController и при загрузки любой страницы, будут запускаться этот метод.
    Ответ написан
    Комментировать
  • Где посмотреть видео про использование Git?

    FanKiLL
    @FanKiLL
    Есть переведённые курсы от lynda.com про git - если вам именно на русском надо
    rutracker.org/forum/viewtopic.php?t=4782388

    Но лучше в оригинале смотреть
    rutracker.org/forum/viewtopic.php?t=4178341

    Я вам ничего не давал и меня тут вообще не было.
    Ответ написан
    Комментировать
  • Какие есть русскоязычные интерактивные курсы по Ruby, RoR?

    FanKiLL
    @FanKiLL
    Кроме rails.hasbrains.org ничего толкового нет, есть ещё переводы railscasts но и первое и второе потихоньку теряет свою актуальность.
    Ответ написан
    Комментировать
  • Как создать поддомены в Rails?

    FanKiLL
    @FanKiLL
    Прописать в routes.rb субдомены. Или так у вас не работает?
    namespace :admin do
      constraints subdomain: 'admin' do
        resources :photos
      end
    end
    Ответ написан
  • Как передать переменную с одного класса в другой?

    FanKiLL
    @FanKiLL
    -new TaxiApiAsync(),execute("номер телефона");

    @Override
        protected TaxiResponce doInBackground(String... strs) {
            // получили json
            String jsonResponce = null;
            try {
                jsonResponce = new TaxiApi().withPhone(strs[0]).withAdress("Фонтанка 33").done().send();
            } catch (IOException e) {
                e.printStackTrace();
            }
            // распарсили json в класс, чтоб можно было брать данные из обычных
            // переменных
            TaxiResponce taxiResponce = new Gson().fromJson(jsonResponce, TaxiResponce.class);
    
            return taxiResponce;
        }
    Ответ написан
    Комментировать
  • SSH ключи для GitHub работают на BitBucket?

    FanKiLL
    @FanKiLL
    Может вы на битбакет по http пуши делаете?
    Ответ написан
    8 комментариев
  • Как быстро сделать эффект нажатия для ImageView или Button с картинкой?

    FanKiLL
    @FanKiLL
    А какой эффект интересует, именно анимация, или смена цвета, бордера, смена размера шрифта?
    Тогда это можно сделать стилями.

    Например красная кнопка
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" >
            <shape>
                <solid
                    android:color="#ef4444" />
                <stroke
                    android:width="1dp"
                    android:color="#992f2f" />
                <corners
                    android:radius="3dp" />
                <padding
                    android:left="10dp"
                    android:top="10dp"
                    android:right="10dp"
                    android:bottom="10dp" />
            </shape>
        </item>
        <item>
            <shape>
                <gradient
                    android:startColor="#ef4444"
                    android:endColor="#992f2f"
                    android:angle="270" />
                <stroke
                    android:width="1dp"
                    android:color="#992f2f" />
                <corners
                    android:radius="3dp" />
                <padding
                    android:left="10dp"
                    android:top="10dp"
                    android:right="10dp"
                    android:bottom="10dp" />
            </shape>
        </item>
    </selector>


    Обратите внимание на android:state_pressed="true" означает когда кнопка например нажата, это разные состояния, подробней можете прочитать тут

    таких состояний довольно много - например android:state_focused

    Так можно поменять полностью дизайн кнопки

    Цепляете потом этот стиль к кнопке в layout

    <Button
                        android:id="@+id/btnCansel"
                        style="@style/button"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:background="@drawable/custom_red_button"
                        android:onClick="onClickCanselButton"
                        android:text="@string/clear" />


    Обратите внимание на android:background="@drawable/custom_red_button" тут цепляется стиль с описанием разных состояний к кнопке.
    Ответ написан
    Комментировать
  • Как переделать request запрос с PHP на Java(под Android)?

    FanKiLL
    @FanKiLL
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    public class HttpSend {
    	public static void main(String[] args) {
    		System.out.println(SendJsonViaPost("http://toster.ru/", "ваш json"));
    	}
    
    	public static String SendJsonViaPost(String url, String json) {
    		String responseJson = "";
    		HttpClient client = new DefaultHttpClient();
    		HttpPost post = new HttpPost(url);
    		try {
    			StringEntity stringEntity = new StringEntity(json, "UTF-8");
    			stringEntity.setContentType("application/json");
    			post.setEntity(stringEntity);
    			HttpResponse response = client.execute(post);
    			BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    			String line = "";
    			while ((line = rd.readLine()) != null) {
    				responseJson += line;
    			}
    			
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    		return responseJson;
    	}
    }


    HttpSend.sendJsonViaPost("http://toster.ru/", "ваш json")
    Ответ написан
    Комментировать
  • Как посчитать дублирующиеся элементы в массиве?

    FanKiLL
    @FanKiLL
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Application {
    
    	public static void main(String[] args) {
    		Map<Character, Integer> letters = new HashMap<Character, Integer>();
    
    		ArrayList<Character> fakeArray = new ArrayList<Character>();
    		fakeArray.add('a');
    		fakeArray.add('a');
    		fakeArray.add('a');
    		fakeArray.add('b');
    		fakeArray.add('b');
    		fakeArray.add('c');
    		fakeArray.add('c');
    		fakeArray.add('c');
    		fakeArray.add('w');
    		fakeArray.add('w');
    		fakeArray.add('w');
    		fakeArray.add('w');
    		fakeArray.add('g');
    
    		for (int i = 0; i < fakeArray.size(); i++) {
    			Character tempChar = fakeArray.get(i);
    
    			if (!letters.containsKey(tempChar)) {
    				letters.put(tempChar, 1);
    			} else {
    				letters.put(tempChar, letters.get(tempChar) + 1);
    			}
    		}
    
    		for (Map.Entry<Character, Integer> entry : letters.entrySet()) {
    			System.out.println("Буква = " + entry.getKey() + ", Повторений = " + entry.getValue());
    		}
    
    	}
    }


    И вот что выводит в консоль, когда скрипт отработал.

    Буква = w, Повторений = 4
    Буква = g, Повторений = 1
    Буква = b, Повторений = 2
    Буква = c, Повторений = 3
    Буква = a, Повторений = 3


    Наверно можно лучше, сейчас бошка не варит сорри. Но задачу решает, копайте в эту сторону.
    Ответ написан
    Комментировать
  • Где можно научиться писать сервер на Java?

    FanKiLL
    @FanKiLL
    Какой то размытый вопрос.
    Сервер для чего? Какой протокол tcp, http, http rest с отдачей json?
    netty.io
    https://grizzly.java.net/
    Это вам для tcp или websocket's
    jax-rs 2.0 для всякого rest + json или spring.io spring framework
    Ответ написан
    Комментировать