• Какие вы знаете хорошие книги по ООП PHP?

    GTRxShock
    @GTRxShock
    Full-stack developer (Symfony, Angular)
    Мэт Зандстра - PHP: объекты, шаблоны и методики программирования
    www.combook.ru/product/11140344/ в бумажном варианте желательно
    Ответ написан
    2 комментария
  • Какую IDE Вы используете для разработок программ с Javafx?

    mystdeim
    @mystdeim
    Использую eclipse с плагином e(fx)clipse + scene builder
    Ответ написан
    Комментировать
  • Как создать такое на html, css, js?

    @websteam
    Вот решениеkottenator.github.io/jquery-circle-progress плюс немного ajax для передачи значений
    Ответ написан
    Комментировать
  • Какую IDE Вы используете для разработок программ с Javafx?

    abs0lut
    @abs0lut
    Ответ написан
    Комментировать
  • Какие могут быть критерии оценки программиста?

    sim3x
    @sim3x
    Разработай
    Ответ написан
    Комментировать
  • Какой список литературы для структурированного изучения программирования?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Я думаю надо начать с базовых вещей на которых базируется программирование:
    1. Дискретная математика базовые понятия
    2. Теория графов
    3. Теория конечных автоматов
    4. Теория кодирования
    5. Баллистика
    6. Теория надёжности
    7. Теория массового обслуживания

    С книгами не подскажу, дело в том, что объёмность достаточного материала каждой теме это скорее брошюра чем книга. Я думаю стоит искать не книги, а методические пособия для вузов по этим темам. В приведённом списке сохранена разумная последовательность. Вот например по первым трём пунктам сходу нагуглил - это неплохо но можно найти изложение и получше.
    Тут приятно, что все пункты кроме первого, можете сразу рассматривать через призму разработки игр.

    Ну и само базовое программирование:
    Турбо Ассемблер Тома Свана - для понимания как всё работает на самом деле (в практическую часть книги можно( и наверное не нужно) сильно не лезть, теоретическая часть достаточно хороша)
    "Язык С" Керниган, Ричи - для понимания на каких базовых структурах и типах строятся современные ЯП и чего им это стоит.

    Я полагаю, что в это всё стоит поражаться до того момента пока не придёт понимание, что в высокоуровневых языках и средах вы всё равно оперируете базовой математикой и базовыми структурами/типами данных. Т.е. всякие парадигмы, паттерны и т.п. включая языки, после после некоторой практики начнёте рассматривать исключительно как инструменты которые при необходимости можно освоить и использовать.

    По алгоритмам: "алгоритмы построение и анализ" Кормена. Кнута мне кажется никто не осилил.
    Ответ написан
    3 комментария
  • Как спроектировать структуру классов текстового редактора?

    timych
    @timych
    На swing писал только в колледже, но от нечего делать немного переписал ваш код.
    Сильно заморачиваться не стал - вариантов архитектуры много..
    Но я бы посоветовал не увлекаться обьявлением переменных как членов класса, если не планируется их использовать. Также по возможности не включайте много логики в конструктор (ИМХО)
    Ну и названия классов не очень правильные как мне кажется.
    Также различные размеры элементов и текстовые сообщения желательно обьявлять как константы.
    И не помешало бы добавить проверку -действительно ли выбранный файл - текстовый.

    package wordpad;
    
    public class RunTextEditor {
    
    	public static void main(String args[]) {	
    		
    		new Environment().run();
    
    	}
    }


    package wordpad;
    
    
    import javax.swing.*;
    import java.awt.*;
    
    // Название класса не правильное!
    public class Service extends JLabel {
    
    	private static final long serialVersionUID = 1L;
    
    	public Service() {
    		super();
    		setPreferredSize(new Dimension(200, 30));
    		setHorizontalAlignment(SwingConstants.CENTER);
    	}
    
    	public Service(String message) {
    		this();
    		setMessage(message);
    	}
    
    	public void setMessage(String message) {
    		setText(message);
    	}
    }


    package wordpad;
    
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    
    //  Я бы переименовал в  FileManager или что-то подобное 
    public class LoadFile {
    
    	private FileHandler handler;
    
    	// интерфейс обработчика можно вынести и в  отдельный класс
    	public interface FileHandler {
    		
    		void onLoad(Document document);
    
    		void onSave(Document document);
    
    		void onError(String message);
    	}
    
    	// конструктор приватный чтобы не проверять обработчик на null
    	private LoadFile() {
    	}
    
    	public LoadFile(FileHandler handler) {
    		this();
    		setHAndler(handler);
    	}
    	
    	
    	public FileHandler getHandler() {
    		return handler;
    	}
    	
    	public void setHAndler(FileHandler handler) {
    		this.handler =  handler;
    	}
    
    	public void processLoad(File file) {
    
    		if ( file == null || !file.exists()) {
    			handler.onError("No filename present");
    			return;
    		}
    
    		try {
    			FileReader fileReader = new FileReader(file);
    			String text = new String(Files.readAllBytes(Paths.get(file.getAbsolutePath())));
    			Document document = new Document(file.getName(), 0, text);
    			fileReader.close();
    			handler.onLoad(document);
    		} catch (IOException exc) {
    			handler.onError("Error opening or reading file.");
    		}
    	}
    }


    package wordpad;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    
    import javax.swing.JFileChooser;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    
    import wordpad.LoadFile.FileHandler;
    
    
    public class FileMenu extends JMenuBar {
    
    	private static final long serialVersionUID = 1L;
    
    	private FileMenu() {
    		super();
    	}
    
    	public FileMenu(FileHandler handler) {
    		this();
    		JMenu menu = new JMenu("File");
    		JMenuItem loadItem = new JMenuItem("Load");
    		JMenuItem saveItem = new JMenuItem("Save");
    		JFileChooser fileChooser = new JFileChooser();
    		LoadFile fileManager = new LoadFile(handler);
    
    
    		menu.add(loadItem);
    		menu.add(saveItem);
    		add(menu);
    		loadItem.addActionListener(new ActionListener() {
    
    			@Override
    			public void actionPerformed(ActionEvent e) {
    
    				int result = fileChooser.showOpenDialog(null);
    
    				if (result == JFileChooser.APPROVE_OPTION) {
    					File file = fileChooser.getSelectedFile();
    					fileManager.processLoad(file);
    				} else {
    					fileManager.getHandler().onError("No file selected.");
    				}
    			}
    		});
    		
    		//TODO добавьте сохранение сами :)
    
    	}
    }


    package wordpad;
    
    import javax.swing.*;
    
    import wordpad.LoadFile.FileHandler;
    
    import java.awt.*;
    
    // Не очень красивое название класса на мой взгляд
    public class Environment {
    
    	private JTextArea textArea;
    	private JFrame mainFrame;
    	private Service statusMessage;
    
    	private FileHandler handler = new FileHandler() {
    
    		@Override
    		public void onSave(Document document) {
    			statusMessage.setText(document.getFileName() + " saved!");
    		}
    
    		@Override
    		public void onLoad(Document document) {
    			textArea.setText(document.getContent());
    			statusMessage.setText(document.getFileName() + " loaded");
    		}
    
    		@Override
    		public void onError(String message) {
    			statusMessage.setText(message);
    		}
    	};
    
    	public Environment() {
    
    		mainFrame = new JFrame("Text Editor");
    		mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    		mainFrame.getContentPane().setLayout(new FlowLayout());
    		mainFrame.setSize(270, 420);
    
    		textArea = new JTextArea();
    		JScrollPane jScrollPane = new JScrollPane(textArea);
    		jScrollPane.setPreferredSize(new Dimension(250, 200));
    		jScrollPane.getViewport().add(textArea);
    
    		FileMenu fileMenu = new FileMenu(handler);
    
    		mainFrame.setJMenuBar(fileMenu);
    		Container container = mainFrame.getContentPane();
    		container.add(jScrollPane);
    		statusMessage = new Service();
    		container.add(statusMessage);
    
    	}
    
    	public void run() {
    		mainFrame.setVisible(true);
    	}
    }


    package wordpad;
    
    /**
     * @author Timur Nikiforov
     */
    public class Document {
    
    	private String fileName;
    	private String content;
    	// Для чего нужна позиция каретки?
    	private int caretPosition;
    
    	public Document(String fileName, int caretPosition, String content) {
    		this.setFileName(fileName);
    		this.setCaretPosition(caretPosition);
    		this.setContent(content);
    	}
    
    	public String getFileName() {
    		return fileName;
    	}
    
    	public void setFileName(String fileName) {
    		this.fileName = fileName;
    	}
    
    	public String getContent() {
    		return content;
    	}
    
    	public void setContent(String content) {
    		this.content = content;
    	}
    
    	public int getCaretPosition() {
    		return caretPosition;
    	}
    
    	public void setCaretPosition(int caretPosition) {
    		this.caretPosition = caretPosition;
    	}
    }


    ЗЫ: B как сказали выше - испульзуйте лучше JavaFX
    По поводу книги: вот неплохая и читается легко.
    Ответ написан
    4 комментария
  • Какой список литературы для структурированного изучения программирования?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Если бы имел машину времени, чтоб вбить "Я-в-прошлом" то что надо читать, то это было бы так:
    1. Таненбаум про его Операционные системы
    2. Таненбаум про аппаратное обеспечение
    3. Язык программирования Python по книге Лутза и при этом чтение "Structure And Interpretation Of Computer Program".
    4. Только после этого приступил бы к чтению Керниган, Ричи "Язык С"
    5. Попытался бы влиться в какой-нибудь OpenSource проект

    Далеее уже следуют попытки понять к чему душа лежит, толи вебу, толи linux kernel module, толи еще что.
    В течении этих пункто НЕПРЕРЫВНО улучшать английский. Большинство серьезной литературы о новых технологиях появлятся сначала на английском.
    Ответ написан
    10 комментариев
  • Какие существуют нотации(правила именования) в программировании?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Кратко: Именуйте так, чтобы смысл переменных (код) был понятен не только Вам.
    Ответ написан
    Комментировать
  • Какие существуют нотации(правила именования) в программировании?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Ответ написан
    Комментировать
  • Какие существуют нотации(правила именования) в программировании?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Не вижу смысла в условиях современных IDE с подсветкой синтаксиса, засовывать информацию о типе и принадлежности классам в название переменной.

    -меньше абракадабры
    -больше читаемости и самокомментирующего кода
    Ответ написан
    3 комментария
  • На чем реализовывать интерфейс для Java-приложения?

    @nirvimel
    Вариантов GUI под десктоп не много:
    1. Swing/AWT.
    2. JavaFX - призван на замену Swing самим Oracle.
    3. SWT - альтернатива от IBM, лежит в основе Eclipse.
    4. Qt Jambi - хорошая задумка, но так и не успел набрать популярность, Nokia (основной разработчик) бросила его после поглощения M$.

    С выбором GUI под web дела обстоят чуть лучше.
    Ответ написан
    Комментировать
  • Почему не стоит вызывать методы в конструкторе?

    EugeneP2
    @EugeneP2
    Java Dev
    Почему нельзя? очень даже можно, только этот метод должен быть private. Не рекомендуют вызывать public и protected методы. Если класс не финальный, открытые методы могут быть переопределены в подклассе, и тогда в вашем конструкторе будут вызываться не ваши методы, а переопределенные, что может сломать логику работы вашего класса и привести к ошибке.
    Ответ написан
    Комментировать
  • Почему не стоит вызывать методы в конструкторе?

    @protven
    Ну например потому что у вас на момент вызова конструктора объект вашего класса еще не создан окончательно (внезапно!). И только находится в процессе создания. Поэтому объект может быть в неконсистентном состоянии на момент вызова своего метода.
    Ответ написан
    Комментировать
  • Как исправить программу чтобы заработала специализация?

    @vilgeforce
    Раздолбай и программист
    Классика: что ждете от работы программы, что выдает программа при выполнении? Ну и что в отладчике выяснили?
    Ответ написан
    5 комментариев
  • Плагин для Brackets - интерпретатор для php?

    Softwider
    @Softwider
    На скриншоте (из лекций по PHP от Специалиста ) используется расширение Integrated Development.
    Устанавливаем его из Менеджера расширений.
    Далее идем: Правка -> Edit Builder
    Находим там: "cmd": "php $FILE",
    Меняем эту строку на: "cmd": "C:/PHP-5.6/php.exe $FILE",
    (не забудьте поставить свой путь до PHP вместо C:/PHP-5.6/php.exe)
    Ответ написан
    9 комментариев
  • Как приступить к изучению баз данных на C++ в Ubuntu?

    akalend
    @akalend
    программирую
    Изучать специально какое либо АПИ на С++ для БД не нужно. Нужно иметь общее понятие про то, что такое сервер БД. Уметь составлять SQL запросы. Разбираться в оптимизации структур данных и тюнинге запросов. В моей практике приходилось иметь дело с разными БД (MSSql MySQL, PgSQL, VoltDb, Informix) и разными языками (С++, РНР, Python, Java ). При достаточной практике работы, любое АПИ к БД осваивается за два часа. По этому, моя рекомендация - выбираешь любую из популярных БД (MySQL,PgSQL) и начинаешь тренироваться в запросах. Выбор между MySQL и PgSQL - это религиозный спор. На начальном этапе - это абсолютно без разницы. Освоив одну БД, всегда можно быстро переключиться на другую и уже дальше осваивать её особенности.
    Ответ написан
    Комментировать
  • Как приступить к изучению баз данных на C++ в Ubuntu?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Насколько я знаю, можно предположить, что MS SQL будет запускаться только на MS платформе (и то, может через wine можно запустить под линуксом).
    Практически все остальные базы данных работают под линукс, в том числе и убунтой.
    Для С++ есть библиотеки для любой БД.

    Вам нужно не С++ изучать с БД, а просто изучить SQL, а потом просто ею пользоваться из вашего языка программирования.
    Кроме того, не забывайте, что база данных может стоять на любом удаленном сервере.
    Ответ написан
    Комментировать