septiembre 08, 2009
Ahora es posible subscribirse a las noticias y eventos en la página Web del ayuntamiento de Brihuega:
Noticias en RSS
Las noticias de Brihuega y sus pedanías se ofrecen en formato RSS, que permite subscribirse de una manera sencilla y gratuita a los contenidos de una página Web. Puede subscribirse a las noticias de Brihuega o una de sus pedanías usando los siguientes enlaces:
Eventos en ICalendar
Si usa Apple iCal, Mozilla Calendar, u otro programa que soporte el formato iCalendar, puede usar la dirección http://brihuega.es/calendar.ics para subscribirse a la agenda de Brihuega. Su programa de escritorio le mostrará los eventos que tengan lugar en Brihuega. La página de Wikipedia iCalendar ofrece más información sobre este formato.
A continuación puede ver un ejemplo de como quedaría el calendario de Brihuega integrado en el programa ICal:
Más aún, el código HTML para los eventos en la página Web usa el microformato HCalendar. El uso de microformatos permite a otras herramientas (como páginas Web o extensiones de Firefox) extraer los detalles de un evento, mostrarlos, indexarlos, buscarlos, o cargarlos en un programa de escritorio para la gestión de calendarios o en otra página Web.
Permitir a los visitantes de nuestras páginas Web mantenerse al día nuestra de información, sin necesidad de visitar constantemente nuestra Web, ayuda a crear una comunidad en torno a nuestra página.
Etiquetas: ical, microformat
septiembre 03, 2009
Si os gusta la serie Heroes tanto como a mi, quizás conozcais también el comic de la misma. Este se actualiza regularmente y cuenta con más de 140 números. Se puede descargar gratis en formato PDF de la página de NBC y hay hasta una aplicación para Iphone. Nissan patrocina el comic poniendo un anuncio en la pequeña página. El siguiente programa de Java, os descargará todos los PDF y eliminará dicha primera página.
import java.io.*;
import java.net.*;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
public class UrlDownload {
public static int numberOfPages = 0;
public static boolean OVERWRITE = false;
public static String URL = "http://www.nbc.com/Heroes/novels/downloads/";
public static String FOLDER = "HeroesNovel";
public static String OUTPUT = "output";
public static void main(String[] args) {
(new File(FOLDER)).mkdir();
(new File(OUTPUT)).mkdir();
for(int i = 1; i < 2000; i++) {
String filename = "Heroes_novel_";
if(i < 10) {
filename += "00" + i + ".pdf";
} else if((9 < i) && (i < 100)) {
filename += "0" + i + ".pdf";
} else {
filename += i + ".pdf";
}
try {
if(!(new File(FOLDER + "/" + filename).exists()) || OVERWRITE) {
saveUrl(FOLDER + "/" + filename, URL + "/" + filename);
System.out.println(filename + " downloaded!");
removeFirstPage(filename);
System.out.println("Removing the first page publicity of " + filename);
}
} catch (MalformedURLException e) {
System.out.println("MalformedURLException");
break;
} catch (DocumentException e) {
System.out.println("DocumentException");
break;
} catch (IOException e) {
System.out.println("IOException");
break;
}
}
System.out.println("Number of pages: " + numberOfPages);
}
public static void saveUrl(String filename, String urlString) throws MalformedURLException, IOException {
BufferedInputStream in = null;
FileOutputStream fout = null;
try {
URL u = new URL(urlString);
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
huc.setRequestMethod("GET");
huc.setRequestProperty("User-Agent", " Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)");
huc.connect();
if(huc.getResponseCode()==404) {
throw new IOException();
}
in = new BufferedInputStream(huc.getInputStream());
fout = new FileOutputStream(filename);
byte data[] = new byte[1024];
int count;
while ((count = in.read(data, 0, 1024)) != -1) {
fout.write(data, 0, count);
}
} finally {
if (in != null)
in.close();
if (fout != null)
fout.close();
}
}
public static void removeFirstPage(String pdf_filename) throws DocumentException, IOException {
File outFile = new File(OUTPUT + "/" + pdf_filename);
PdfReader reader = new PdfReader(FOLDER + "/" + pdf_filename);
Document document = new Document(reader.getPageSizeWithRotation(1));
PdfCopy copy = new PdfCopy(document, new FileOutputStream(outFile));
int pages = reader.getNumberOfPages();
numberOfPages += pages;
document.open();
if(pages > 0) {
for(int i=2; i <= pages;i++) {
PdfImportedPage page = copy.getImportedPage(reader, i);
copy.addPage(page);
}
}
document.close();
}
public int getNumberOfPages() {
return numberOfPages;
}
public void setNumberOfPages(int number_of_pages) {
numberOfPages = number_of_pages;
}
}
Para poder compilar el código anterior, necesitareís la librería gratuita iText con la cual podeís maninpular PDF en Java. Heroes vuelve este Otoño, disfrutad de más de 1.000 páginas de comic mientras tanto.
Etiquetas: pdf, programming, series
septiembre 02, 2009
Con startup me refiero a empresas recién puestas en marcha, especialmente de la mano de emprendedores. Dharmesh Sah en su ponencia de la conferencia Business of Software 2008 expuso su opinión sobre las asociaciones entre startups, que podríamos resumir en:
Las asociaciones entre startups son problemáticas. Normalmente estas empresas se atraen por que una de ellas tiene cierta tecnología, ambas tienen intereses comunes o sus productos son complementarios. ¿Por qué no ir de la mano y así poder ofrecer un mejor servicio a nuestros clientes?. El problema es en esencia que ambas empresas quieren lo mismo. Ambas tienen los mismos problemas, están en competencia por la visión del producto y están compitiendo por dinero. Pronto surgirán roces como ¿Por qué tenemos que gastar dinero en esta feria que yo considero que no aportará nada?. Luego, tienes también problemas sobre la sinergia de un producto, porque vuestros puntos de vista pueden ser complementarios ahora, pero pasado el tiempo, tú quieres implementar esa característica por la cual ellos no tienen interés alguno. O peor aún, su producto no se adapta a tus clientes y sientes que podrías construir una solución mejor. En la etapa de creación de una empresa donde el entusiasmo es importantisimo no quieres perder el tiempo discutiendo con otra persona que como tú tiene una consciencia muy fuerte sobre el dinero o tiempo a gastar. Simplemente no te asocies con otra startup.
Etiquetas: startup