Pull to refresh
0
0
Gangsta @Gangsta

User

Перезалейте джифку
успех на рынке труда зависит в первую очередь от сочетания навыков

Успех зависит не от сочетания навыков. Это всё фигня. Разработчики без особых навыков работают на иностранного заказчика по 200K+ в мес. Просто найдите работу в нормальной стране и не надо будет унижаться, когда вам в очередной московской конторе скажут «а вот тут у вас товарищ, пробел в знаниях, надо подучить-подучить, а пока мы вам оплатим по ставочке $3/час».

Пора завязывать работать на Россию — вот главный посыл для всех разработчиков в 2014 году. Это намного важнее, чем апгрейд навыков.
У меня был proxmox на Hetzner'е, полетел жесткий диск потом на этом Hetzner'е. Ну и как-то оболочка не доставляет. Поставил условно бесплатную винду, VMWare туда — решение неплохое. Гемора меньше в разы.
Статья ни о чем.

Позабавило «из Покхары». Я был в Покхаре. Деревня, в которой раз в день на несколько часов отключают не то что интернет, а вообще электричество. Может сейчас оно и получше. Но вряд ли что там изменилось за пару лет.
Вы определили общий интерфейс ICache как интерфейс, привязанный к модели (KarmaModel). В вашем случае правильно было бы писать IKarmaCache. Хотя лучше делать именно общий интерфейс. А модели наследовать от BaseModel.

Вот так бы я переписал ваш код:

public interface ICache
{
	bool HasCached(string key);
	BaseModel GetCachedItem(string key);
	void Put(BaseModel updatedModel);
}

public abstract BaseModel
{
	public string Key { get; set; }
}

public KarmaModel : BaseModel
{
	// ...
}



Дальше идет та же ошибка. Абстракция (IHttpClient) привязана к конкретной реализации (KarmaModel). Эта ошибка также проявляется в классе KarmaResponse, т.к. опять же, лучше сделать BaseResponse и от него унаследовать KarmaResponse.

Ну а так норм, неплохой подход.

Вы используете Xamarin? Какую библиотекую используете для MVVM?
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Box
{
    public interface IAsset
    {
        void Accept(IVisitor visitor);
    }

    public class MyBox : IAsset
    {
        public int[,] Arr;
        public int Size;

        public MyBox(int size)
        {
            this.Size = size;
            Arr = new int[size, size];
        }

        public void Accept(IVisitor visitor)
        {
            visitor.Visit(this);
        }

        public override string ToString()
        {
            string s = "";
            for (int i = 0; i < Size; i++)
            {
                for(int j = 0; j < Size; j++)
                {
                    s += (" " + String.Format("{0:D2}", Arr[j, i]) + " ").Replace(" 00 ", " __ ");
                }
                s += "\r\n";
            }
            return s;
        }
    }

    public interface IVisitor
    {
        void Visit(MyBox box);
    }

    public class MyVisitor : IVisitor
    {
        public enum Directions { Left, Right, Up, Down }
        
        public class Rules
        {
            private int index = 0;

            public Directions CurrentDirection
            {
                get
                {
                    return rules[index];
                }
            }

            private List<Directions> rules = new List<Directions>
            {
                Directions.Right,
                Directions.Down,
                Directions.Left,
                Directions.Up
            };
            
            public void SwitchToNext()
            {
                index++;
                if (index > 3)
                    index = 0;
            }
        }

        private Rules rules = new Rules();

        private bool isObstacle(MyBox box, Directions direction, int x, int y)
        {
            switch(direction)
            {
                case Directions.Right:
                    if (x + 1 >= box.Size)
                        return true;
                    return box.Arr[x + 1, y] != 0;

                case Directions.Down:
                    if (y + 1 >= box.Size)
                        return true;
                    return box.Arr[x, y + 1] != 0;

                case Directions.Left:
                    if (x - 1 < 0)
                        return true;
                    return box.Arr[x - 1, y] != 0;

                case Directions.Up:
                    if (y - 1 < 0)
                        return true;
                    return box.Arr[x, y - 1] != 0;

                default:
                    throw new NotSupportedException();
            }
        }

        public void Visit(MyBox box)
        {
            int x = -1;
            int y = 0;
            int value = 1;

            while(value < box.Size * box.Size + 1)
            {
                if(isObstacle(box, rules.CurrentDirection, x, y))
                    rules.SwitchToNext();

                switch(rules.CurrentDirection)
                {
                    case Directions.Right:
                        x++;
                        break;
                    case Directions.Down:
                        y++;
                        break;
                    case Directions.Left:
                        x--;
                        break;
                    case Directions.Up:
                        y--;
                        break;
                }

                box.Arr[x, y] = value;
                value++;
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Type the size (enter for 8): ");
            
            string str = Console.ReadLine();
            if (String.IsNullOrWhiteSpace(str))
                str = "8";
            
            int size = Int32.Parse(str);

            IVisitor visitor = new MyVisitor();
            MyBox box = new MyBox(size);
            box.Accept(visitor);

            Console.WriteLine(box);
        }
    }
}



GitHub, DotNetFiddle
Очень много новостей на Хабре перепечатываются с hacker news (правда, с 3-5 дневной задержкой), иногда с reddit. Вот и эта ссыль тоже оттуда (пруф 1, пруф 2).
Напомню, что по-английски статья называется «Huge attack on WordPress sites could spawn never-before-seen super botnet». Если вчитаться, то можно увидеть что сам заголовок как бы уже намекает на желтизну: could spawn, never-before-seen, super botnet. Не исключаю того, что атака была так себе. Но журналистам нужно побольше трафика, поэтому почему бы не заюзать catchy words в заголовке статьи?
Смените заголовок на «Произошла утечка одного из тестовых UEFI-ключей компании AMI», а то желтизной попахивает.
На полный экран не разворачивается.
2013 год! Мы изобрели первый смартфон!
Видимо это как в анекдоте:

— Доктор, а как мне не заболеть СПИДом?
— Да очень просто, надеть на член 10 презервативов!
— Так просто. И все?
— Ну и самое главное — никаких половых контактов!
Справедливости ради.

Напомню, что не так давно Арбитражный комитет русской Википедии наказал инициаторов забастовки против принятия закона о реестре запрещённых сайтов. С них сняты флаги администратора. С администраторов Putnik и Melirius инициировавших и технически осуществивших забастовку, были сняты флаги администратора.

То wikipedia администраторов банит, которые были против закона. То возмущается тем, что закон на них-таки подействовал. Теперь пусть передают приветы в твиттере.
Думаю, что там стоит обычный dial-up модем.
Забавно, что Хабр забанил человека, которого туда приглашали доклад читать.
С одной стороны это понятно. С другой стороны шлешь свое резюме на позицию C# / .Net программиста, никто не отвечает даже. А если и отвечают, то говорят, что должен быть eligible to work in US. Что я делаю не так/кто возьмет меня к себе?
Включил. Послушал рекламку полудохлого ишака. Выключил.

И уж будущее точно не за IE, которого так стараюсься реанимировать маркетологи. Даже показывают рекламу, завуалированную под мероприятия. И если посмотреть на ник топикстартера, то можно увидеть в конце "_ms". И все становится понятно.

Я не против MS, но выглядит это как-то все неестественно: HTML5 и IE.
Интересно зачем это нужно. Я вот сделал много проектов с нуля на C# / .Net, и ответы на многие вопросы так никогда и не узнаю в своей жизни. И считаю, что это хорошо. Потому что голова свободна для полезной информации. А если мне что-то нужно, то всегда могу посмотреть в справке.

Information

Rating
Does not participate
Registered
Activity