Lo mejor de mi RSS del 2 al 8 de septiembre de 2013

Leer más » 1 Comentario

Lo mejor de mi timeline del 1 al 7 de septiembre

https://twitter.com/Manz/status/376081392519880704

Leer más » 1 Comentario

Mostrar los asteriscos de la contraseña en un terminal

Por defecto en Linux, algo que resulta un poco engorroso, según que caso, es no conocer cuántos caracteres llevamos escritos cuando estamos rellenando el campo de una contraseña bajo un terminal. Algunos dirán que es más seguro no mostrar cuántos caracteres se escriben, de esta manera si alguien nos estuviera mirando lo tendría más difícil a la hora de tratar de averiguar lo escrito.

ver_contraseña_linux_hispano

Sea como fuere, prefiero tener ese feedback de que estoy escribiendo en el momento que escribo, y no solo hablo de la pulsación de una tecla física del teclado. Bien, así, la forma de solventarlo es fácil. Abrimos un terminal y ejecutamos visudo: read more

Leer más » 2 Comentarios

Dutyful, una herramienta complemento al concepto de “standup meeting”

Dutyful es una herramienta que se ofrece como complemento al concepto de “standup meeting”, una reunión de equipo que se realiza cada día antes de empezar a trabajar. Este tipo de reuniones forman parte de metodologías ágiles como Scrum.

Como seña de identidad Dutyful es una herramienta que utiliza el correo electrónico como pieza fundamental para gestionar equipos y fomentar la colaboración, de la forma más sencilla y cómoda posible.

Dutyful envía un correo diario a los miembros del equipo de trabajo, preguntando lo que se ha hecho en el día. Cada miembro del equipo responde a ese email comentando los avances y objetivos que ha conseguido en la jornada. read more

Leer más » 1 Comentario

Entrada de datos en consola con Python

Si quieres un programa en Python 3 sin interfaz gráfica y que la entrada de datos la realice el usuario durante la ejecución del programa y en consola la función a usar es la de input.

Veamos un sencillo ejemplo:

print('Nombre: ')
nombre = input()
print('Es un placer conocerte, ' + nombre)
Leer más » 2 Comentarios

Cómo saber la codificación del juego de caracteres desde la consola Linux

La codificación empleada en un fichero es extremadamente importante en ciertas situaciones. Se me ocurren dos por ahora: he intentado importar un CSV a LibreOffice Calc y si no llego a dar con la codificación exacta, no hubiera podido tener los datos o al menos no con tildes, eñes, etc.

utf8

Otro caso que se me ocurre, tenemos un servidor web que envía contenido web en un charset diferente al que aparece en la etiqueta <meta>, cierto navegador (Internet Explorer) tiene un problema de visualización por esta causa. read more

Leer más » 7 Comentarios

Tres en raya en Python

Invent Your Own Computer Games with Python es un libro gratuito y libre que te enseña a programar juegos de ordenador en Python. Cada ciertos capítulos te muestra el código completo de un nuevo juego y luego te explica los conceptos de programación de dicho código.

Uno de los juegos más sencillos y más interesantes para aprender es el Tres en Raya, aquí os paso el código completo para ejecutarlo en Python 3 en adelante.

# Tic Tac Toe import random def drawBoard(board): # This function prints out the board that it was passed. # "board" is a list of 10 strings representing the board (ignore index 0) print(' | |') print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9]) print(' | |') print('-----------') print(' | |') print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6]) print(' | |') print('-----------') print(' | |') print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3]) print(' | |') def inputPlayerLetter(): # Let's the player type which letter they want to be. # Returns a list with the player's letter as the first item, and the # computer's letter as the second. letter = '' while not (letter == 'X' or letter == 'O'): print('Do you want to be X or O?') letter = input().upper() # the first element in the tuple is the player's letter, the second is # the computer's letter. if letter == 'X': return ['X', 'O'] else: return ['O', 'X'] def whoGoesFirst(): # Randomly choose the player who goes first. if random.randint(0, 1) == 0: return 'computer' else: return 'player' def playAgain(): # This function returns True if the player wants to play again, otherwise # it returns False. print('Do you want to play again? (yes or no)') return input().lower().startswith('y') def makeMove(board, letter, move): board[move] = letter def isWinner(bo, le): # Given a board and a player's letter, this function returns True if that # player has won. We use bo instead of board and le instead of letter so # we don't have to type as much. return ((bo[7] == le and bo[8] == le and bo[9] == le) or # across the top (bo[4] == le and bo[5] == le and bo[6] == le) or # across the middle (bo[1] == le and bo[2] == le and bo[3] == le) or # across the bottom (bo[7] == le and bo[4] == le and bo[1] == le) or # down the left side (bo[8] == le and bo[5] == le and bo[2] == le) or # down the middle (bo[9] == le and bo[6] == le and bo[3] == le) or # down the right side (bo[7] == le and bo[5] == le and bo[3] == le) or # diagonal (bo[9] == le and bo[5] == le and bo[1] == le)) # diagonal def getBoardCopy(board): # Make a duplicate of the board list and return it the duplicate. dupeBoard = [] for i in board: dupeBoard.append(i) return dupeBoard def isSpaceFree(board, move): # Return true if the passed move is free on the passed board. return board[move] == ' ' def getPlayerMove(board): # Let the player type in his move. move = ' ' while move not in '1 2 3 4 5 6 7 8 9'.split() or not isSpaceFree(board, int(move)): print('What is your next move? (1-9)') move = input() return int(move) def chooseRandomMoveFromList(board, movesList): # Returns a valid move from the passed list on the passed board. # Returns None if there is no valid move. possibleMoves = [] for i in movesList: if isSpaceFree(board, i): possibleMoves.append(i) if len(possibleMoves) != 0: return random.choice(possibleMoves) else: return None def getComputerMove(board, computerLetter): # Given a board and the computer's letter, determine where to move and # return that move. if computerLetter == 'X': playerLetter = 'O' else: playerLetter = 'X' # Here is our algorithm for our Tic Tac Toe AI: # First, check if we can win in the next move for i in range(1, 10): copy = getBoardCopy(board) if isSpaceFree(copy, i): makeMove(copy, computerLetter, i) if isWinner(copy, computerLetter): return i # Check if the player could win on his next move, and block them. for i in range(1, 10): copy = getBoardCopy(board) if isSpaceFree(copy, i): makeMove(copy, playerLetter, i) if isWinner(copy, playerLetter): return i # Try to take one of the corners, if they are free. move = chooseRandomMoveFromList(board, [1, 3, 7, 9]) if move != None: return move # Try to take the center, if it is free. if isSpaceFree(board, 5): return 5 # Move on one of the sides. return chooseRandomMoveFromList(board, [2, 4, 6, 8]) def isBoardFull(board): # Return True if every space on the board has been taken. Otherwise # return False. for i in range(1, 10): if isSpaceFree(board, i): return False return True print('Welcome to Tic Tac Toe!') while True: # Reset the board theBoard = [' '] * 10 playerLetter, computerLetter = inputPlayerLetter() turn = whoGoesFirst() print('The ' + turn + ' will go first.') gameIsPlaying = True while gameIsPlaying: if turn == 'player': # Player's turn. drawBoard(theBoard) move = getPlayerMove(theBoard) makeMove(theBoard, playerLetter, move) if isWinner(theBoard, playerLetter): drawBoard(theBoard) print('Hooray! You have won the game!') gameIsPlaying = False else: if isBoardFull(theBoard): drawBoard(theBoard) print('The game is a tie!') break else: turn = 'computer' else: # Computer's turn. move = getComputerMove(theBoard, computerLetter) makeMove(theBoard, computerLetter, move) if isWinner(theBoard, computerLetter): drawBoard(theBoard) print('The computer has beaten you! You lose.') gameIsPlaying = False else: if isBoardFull(theBoard): drawBoard(theBoard) print('The game is a tie!') break else: turn = 'player' if not playAgain(): break read more

Leer más » 2 Comentarios

Ballmer

Leer más » 2 Comentarios

Lo mejor de mi RSS del 26 de agosto al 1 de septiembre de 2013

Leer más » 1 Comentario

Lo mejor de mi timeline del 24 al 30 de agosto

La cosa va de Androids y Xiaomis 🙂

Leer más » 1 Comentario