• Как правильно настроить Eclipse, давно не работал?

    Во-первых, исчез WindowBuilder.
    Я его, конечно, установил.
    Почему его убрали из стандартной поставки?

    Не в курсе точных причин, но Swing устарел и его давно уже заменил JavaFX.

    Во-вторых, как собрать .jar с либами?

    По-моему тут ничего особо не менялось.
    Project -> Export -> Runnable JAR file (или просто JAR file) -> Галочка "Package required libraries into generated JAR" -> Finish
    Ответ написан
    Комментировать
  • Тестовое задание при трудоустройстве?

    @sakuradaj
    https://docs.google.com/document/d/1x1SQgCMGDVJRvB...

    Категория: Платиновые тесты на вакансию Python/Django разработчик
    Ответ написан
    2 комментария
  • Тестовое задание при трудоустройстве?

    kumaxim
    @kumaxim
    Web-программист
    Одно из самых часто встречающихся по версии резидентов одного южного коворкинга.

    Необходимо создать веб-приложение для управления базой данных бонусных карт (карт лояльности, кредитный карт и т.д. Я встречал много вариаций).

    Список полей: серия карты, номер карты, дата выпуска карты, дата окончания активности карты, дата использования, сумма, статус карты (не активирована/активирована/просрочена).

    Функционал приложения
    1. список карт с полями: серия, номер, дата выпуска, дата окончания активности, статус
    2. поиск по этим же полям
    3. просмотр профиля карты с историей покупок по ней
    4. активация/деактивация карты
    5. удаление карты

    Реализовать генератор карт, с указанием серии и количества генерируемых карт, а также "срок окончания активности" со значениями "1 год", "6 месяцев" "1 месяц". После истечения срока активности карты, у карты проставляется статус "просрочена".

    Примечание: поля с датами должны содержать также и время.


    Вообще почитай книжку "Достаточно ли Вы умны, чтобы работать в Google", задачи из нее мозг разносят на раз. Хотя бы страниц 10-20 перед собеседованием прочесть рекомендую.

    На собеседованиях, особенно если нанимаем Junior'а, по большому счету владение языком/фреймворком спрашивают по минимуму. В основном делается упор на значение базовых моментов математики(мат.логика: СДНФ, СКНФ и т.д. очень часто), структур данных(дискретная математика, деревья, как минимум), принципов(минимум DRY & SOLID) и шаблонов проектирования(GRAPS & GoF) и т.д.

    Иногда задается вопрос вида "А какой самый важный(главный, основной) на Ваш взгляд шаблон(принцип, техника) проектирования(программирования)?" Лично для меня этот шаблон называется "Здравый смысл". Описание можно глянуть в Википедии

    P.S.: успехов в трудоустройстве :-)
    Ответ написан
    Комментировать
  • Тестовое задание при трудоустройстве?

    dizballanze
    @dizballanze
    Software developer at Yandex
    Одно из заданий, которое давал джуниорам:

    Нужно сделать простой сервис проведения тестирования по каким-либо темам. Т.е. есть тесты с вариантами ответов, один или несколько вариантов должны быть правильными. Тесты группируются в наборы тестов, которые затем пользователь может проходить и видеть свой результат.
    Функциональные части сервиса:
    • Регистрация пользователей
    • Аутентификация пользователей
    • Зарегистрированные пользователи могут
      • Проходить любой из тестовых наборов
        • Последовательный ответ на все вопросы, каждый вопрос должен выводится на новой странице с отправкой формы (перескакивать через тесты или оставлять неотмеченными нельзя)
        • После завершения тестирования смотреть результат:
          • количество правильных/неправильных ответов
          • процент правильных ответов



    • Админка. Стандартная админка Django. Разделы:
      • Стандартный раздел пользователей
      • Раздел с наборами тестов
        • Возможность на странице набора тестов добавлять вопросы/ответы к вопросам/отмечать правильные ответы
        • Валидация на то, что должен быть хотябы 1 правильный вариант
        • Валидация на то, что все варианты не могут быть правильными
        • Удаление вопросов/вариантов ответов/изменение правильных решений при редактировании тестового набора


    Требования
    • Код в репозитории на GitHub.
    • Список всех зависимостей должен храниться в requirements.txt, соответственно можно установить их командой pip install -r requirements.txt.
    • Разработка должны вестись в virtualenv, но сама директория с virtualenv должна быть добавлена в .gitignore.
    • Настройки должны храниться в settings.py, но также, при наличии settings_local.py в той же директории, настройки из settings_local.py должны переопределять настройки в settings.py. Т.е. если есть файл settings_local.py, то определенные в нем параметры имеют больший приоритет. Сам файл settings_local.py добавляется в .gitignore. Таким образом у каждого девелопера и на бета сервере можно использовать кастомные настройки, например для соединения с БД.
    • Должен работать один из способо создания структуры БД. Встроенный manage.py syncdb или миграции через South (будет плюсом).
    • По фронт-енду требований никаких не предъявляется. Интерфейс на твое усмотрение и он не буде оцениваться. Можно использовать любимый фреймворк или, например, воспользоваться Twitter Bootstrap.
    Ответ написан
    12 комментариев
  • Как сделать на tkinter аналог TChart (из Delphi)?

    bobrovskyserg
    @bobrovskyserg
    Нет.
    TChart - отрисованная в VCL графика,
    а tkinter - только обёртки виджетов гуи ОС.
    UPDATE
    from collections import OrderedDict
    import tkinter as tk
    from time import sleep
    
    class StripChart(tk.Frame):
        def __init__(self, parent, scale, historySize, trackColors, *args, **opts):
            # Initialize
            super().__init__(parent, *args, **opts)
            self._trackHist = OrderedDict()  # Map: TrackName -> list of canvas objID
            self._trackColor = trackColors  # Map: Track Name -> color
    
            self._chartHeight = scale + 1
            self._chartLength = historySize * 2  # Stretch for readability
    
            self._canvas = tk.Canvas(self, height=self._chartHeight + 17,
                                     width=self._chartLength, background='black')
            self._canvas.grid(sticky=tk.N + tk.S + tk.E + tk.W)
    
            # Draw horizontal to divide plot from tick labels
            x, y = 0, self._chartHeight + 2
            x2, y2 = self._chartLength, y
            self._baseLine = self._canvas.create_line(x, y, x2, y2, fill='white')
    
            # Init track def and histories lists
            self._trackColor.update({'tick': 'white', 'tickline': 'white',
                                     'ticklabel': 'white'})
            for trackName in self._trackColor.keys():
                self._trackHist[trackName] = [None for x in range(historySize)]
    
        def plotValues(self, **vals):
            for trackName, trackHistory in self._trackHist.items():
                # Scroll left-wards
                self._canvas.delete(trackHistory.pop(0))
                # Remove left-most canvas objs
                self._canvas.move(trackName, -2, 0)
                # Scroll canvas objs 2 pixels left
    
                # Plot the new values
                try:
                    val = vals[trackName]
                    x = self._chartLength
                    y = self._chartHeight - val
                    color = self._trackColor[trackName]
    
                    objId = self._canvas.create_line(x, y, x + 1, y, fill=color,
                                                     width=3, tags=trackName)
                    trackHistory.append(objId)
                except:
                    trackHistory.append(None)
    
        def drawTick(self, text=None, **lineOpts):
            # draw vertical tick line
            x = self._chartLength
            y = 1
            x2 = x
            y2 = self._chartHeight
            color = self._trackColor['tickline']
    
            objId = self._canvas.create_line(x, y, x2, y2, fill=color,
                                             tags='tick', **lineOpts)
            self._trackHist['tickline'].append(objId)
    
            # draw tick label
            if text is not None:
                x = self._chartLength
                y = self._chartHeight + 10
                color = self._trackColor['ticklabel']
    
                objId = self._canvas.create_text(x, y, text=text,
                                                 fill=color, tags='tick')
                self._trackHist['ticklabel'].append(objId)
    
        def configTrackColors(self, **trackColors):
            # Change plotted data color
            for trackName, colorName in trackColors.items():
                self._canvas.itemconfigure(trackName, fill=colorName)
    
            # Change settings so future data has the new color
            self._trackColor.update(trackColors)
    
    
    if __name__ == '__main__':
        top = tk.Tk()
        graph = StripChart(top, 100, 300, {'A': 'blue', 'B': 'green', 'C': 'red'})
        graph.grid()
    
        val_A = val_B = val_C = 0
        delta = [-3, -2, -1, 0, 1, 2, 3]  # randomly vary the values by one of these
        tickCount = 0
    
        def nextVal(current, lowerBound, upperBound):
            from random import choice
    
            current += choice(delta)
            if current < lowerBound:
                return lowerBound
            elif current > upperBound:
                return upperBound
            else:
                return current
    
        def plotNextVals():
            global val_A, val_B, val_C, tickCount
    
            if tickCount % 50 == 0:
                graph.drawTick(text=str(tickCount), dash=(1, 4))
            tickCount += 1
            sleep(0.05)
    
    
            val_A = nextVal(val_A, 0, 99)
            val_B = nextVal(val_B, 0, 99)
            val_C = nextVal(val_C, 0, 99)
            graph.plotValues(A=val_A, B=val_B, C=val_C)
    
            # changeColor = { 800: 'black',
            # 1200: 'yellow',
            # 1600: 'orange',
            # 2000: 'white',
            # 2400: 'brown',
            # 2800: 'blue' }
            # if tickCount in changeColor:
            # graph.configTrackColors( A=changeColor[tickCount] )
    
            top.after(1, plotNextVals)
    
        top.after(1, plotNextVals)
    
        top.mainloop()
    Ответ написан
    3 комментария
  • Как сделать многостраничную форму со вкладками?

    bobrovskyserg
    @bobrovskyserg
    from tkinter import *
    import tkinter.ttk as ttk
    
    root = Tk()
    root.title('test')
    
    nb = ttk.Notebook(root)
    nb.pack(fill='both', expand='yes')
    
    f1 = Text(root)
    f2 = Text(root)
    f3 = Text(root)
    
    nb.add(f1, text='page1')
    nb.add(f2, text='page2')
    nb.add(f3, text='page3')
    
    root.mainloop()
    Ответ написан
    Комментировать
  • Notepad++ для разработки в Python?

    @zedxxx
    Спасибо, но меня больше интересует, какие для этого нужны плагины и настройки в Notepad++

    Вот тут неплохо расписано: Let’s Use a Better Python Editor
    Ответ написан
    Комментировать
  • Почему нельзя делать ^Z в конце строки?

    bobrovskyserg
    @bobrovskyserg
    Потому что это - обертка над виндовой функцией ввода.
    Исправить можно, пропатчив винду.
    Ответ написан
    Комментировать
  • Notepad++ для разработки в Python?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    Пайчарм тяжелый, да. Есть легкий редактор Geany для одноразовых скриптов самое то, попробуйте может понравится :)
    Ответ написан
    Комментировать
  • Как сделать сайт на Python без Django и CMS?

    skipirich
    @skipirich
    проходил мимо
    Зря вы так фреймворки не любите. Представьте вам придется контролировать заголовки, маршрутизацию и кроме этих прелестей смешивать html и программный код. Как только вы дойдете до пункта 2 вам станет не по себе, а сопровождать ваш код сможете только вы. Вы даже не сможете пустить в проект верстальщика(если он не владеет Python). Нет вы конечно можете к вашему проекту написать маршрутизатор, привинтить Jinja и SQLAlchemy что в итоге приведет к созданию фреймворка, но судя по вашему вопросу создавать свой фреймворк в ваши планы не входит.
    Ответ написан
    Комментировать
  • Как сделать сайт на Python без Django и CMS?

    SowingSadness
    @SowingSadness
    web-разработчик
    Pyramid
    Лучше вам не найти решения.
    Ответ написан
    2 комментария
  • Как сделать сайт на Python без Django и CMS?

    un1t
    @un1t
    Можно конечно взять веб-сервер (https://docs.python.org/2/library/simplehttpserver.html) и сделать ручную обработку запросов. Но практического смысла в этом нет, зато без фреймворков.
    Можно взять werkzeug, это немного упростит жизнь.
    Затем можно взять Flask, это еще сильнее упростит жизнь.
    Но нафига это нужно не ясно. Лучше все-таки бери Django.
    Про бесплатно в соседнем вопросе уже отвечали.
    Ответ написан
    2 комментария
  • Как в Java делать byte b; b++ и b-- правильно?

    @Ix_Didicus
    К сожалению, в Java нет unsigned типов, но можно перед выводом или использованием значения наложить на него битовую маску:

    public class bytes{
    	public static void main(String[] args){
    		byte b = (byte) 200;
    		System.out.println(b & 0xFF);
    		b+=100;
    		System.out.println(b & 0xFF);
    	}
    }


    Этот код выведет 200 и 44.

    >>Пример: 200 + 100 = 44
    К слову, это называется не "дополнительным кодом" (доп. код — это представление отрицательных чисел, см. ту же Википедию), а переполнением, т.е., попыткой записать в переменную число большее, чем допустимо типом переменной, в результате чего старшие биты попросту утрачиваются.
    Ответ написан
    Комментировать
  • Как в Java делать byte b; b++ и b-- правильно?

    @zelan
    Кратко обо мне не получится.
    ремарка: если тебе нужны значения от 0 до 255, то тип byte тебе не подходит. byte лежит в пределе от -128 до 127. В итоге если нужен диапазон от 0 и до 255 используй short или int, или же приводи b к int.

    Немного не понятна суть вопроса: имеется ввиду что если b=200, делаешь b+=100 и в результате хочешь получить 255 (эдакая защита от "переполнения")? или что-то другое?
    Ответ написан
    1 комментарий
  • Как исправить ошибку при запуске простейшего Django приложения?

    qrasik
    @qrasik
    Веб-разработчик
    Если у вас Win7 то советую попробовать вот так:
    python.exe manage.py runserver 0.0.0.0:8000
    По крайней мере для версии 1.7 помогало
    Ответ написан
    Комментировать
  • Как исправить ошибку при запуске простейшего Django приложения?

    @raiboon
    А у вас случаем не венда с кириллическим именем компутера?
    Ответ написан
    4 комментария
  • Как работать с Django в PyCharm Community Edition?

    @v1ctys
    PyCharm Community Edition в Run конфигурации:
    manage.py runserver
    И даже дебаг отлично работает.

    Но всё равно не советую, так как нет подсветки синтаксиса css, html, js. (Предполагается что community для чистого pythona) Можно обойти и получить так себе подсветку html js css файлов если расширение файла совпадает с содержимым. Но если у тебя например будут куски кода css или js в html файле, то подсветку ни как не получить.
    Поэтому, работать в такой среде неудобно, для Django всё же использовать полную версию PyCharm.
    Ответ написан
    1 комментарий
  • IDE для скриптов PowerShell?

    Посмотрите PowerGUI. Там вплоть до административных оснасток, компиляций в exe-шник и службу.
    Ответ написан
    1 комментарий