diff --git a/gezegen/index.html.tmpl b/gezegen/index.html.tmpl index ef6c5d2..cbbd7cb 100644 --- a/gezegen/index.html.tmpl +++ b/gezegen/index.html.tmpl @@ -1,161 +1,195 @@ - -<TMPL_VAR name> - - - - - - - - - -
- - - - -
+ + <TMPL_VAR name> + + + + + + + + + +
+ + +
-
- - -

-
+
+ + +

+
-
- +
+ + +
+
+
+ +

+ "> + + +

+ +
+   +
+
+
+
+
+ +
+
+
+ + "> + + + + &title=" target="_blank"> + + + " target="_blank"> + + +
+
+ +
+
+
+ +
-
-
-
- -

">

- -
 
-
-
-
-
- -
-
-
- "> - &title=" target="_blank"> - " target="_blank"> -
-
- -
-
-
-
-
- - - - - - - + + + + + \ No newline at end of file diff --git a/planet/__init__.py.backup b/planet/__init__.py.backup deleted file mode 100644 index 34d0c57..0000000 --- a/planet/__init__.py.backup +++ /dev/null @@ -1,948 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -"""Planet aggregator library. - -This package is a library for developing web sites or software that -aggregate RSS, CDF and Atom feeds taken from elsewhere into a single, -combined feed. -""" - -__version__ = "1.0" -__authors__ = [ "Scott James Remnant ", - "Jeff Waugh " ] -__license__ = "Python" - - -# Modules available without separate import -import cache -import feedparser -import sanitize -import htmltmpl -import sgmllib -try: - import logging -except: - import compat_logging as logging - -# Limit the effect of "from planet import *" -__all__ = ("cache", "feedparser", "htmltmpl", "logging", - "Planet", "Channel", "NewsItem") - - -import locale -import os -import md5 -import time -import dbhash -import re -import xml.sax.saxutils - - -# Version information (for generator headers) -VERSION = ("Planet/%s +http://www.planetplanet.org" % __version__) - -# Default User-Agent header to send when retreiving feeds -USER_AGENT = VERSION + " " + feedparser.USER_AGENT - -# Default cache directory -CACHE_DIRECTORY = "cache" - -# Default number of items to display from a new feed -NEW_FEED_ITEMS = 10 - -# Useful common date/time formats -TIMEFMT_ISO = "%Y-%m-%dT%H:%M:%S+00:00" -TIMEFMT_822 = "%a, %d %b %Y %H:%M:%S +0000" - - -# Log instance to use here -log = logging.getLogger("planet") -try: - log.warning -except: - log.warning = log.warn - -# Defaults for the template file config sections -ENCODING = "utf-8" -ITEMS_PER_PAGE = 60 -DAYS_PER_PAGE = 0 -OUTPUT_DIR = "output" -DATE_FORMAT = "%B %d, %Y %I:%M %p" -NEW_DATE_FORMAT = "%B %d, %Y" -ACTIVITY_THRESHOLD = 0 - -class stripHtml(sgmllib.SGMLParser): - "remove all tags from the data" - def __init__(self, data): - sgmllib.SGMLParser.__init__(self) - self.result='' - self.feed(data) - self.close() - def handle_data(self, data): - if data: self.result+=data - -def template_info(item, date_format): - """Produce a dictionary of template information.""" - info = {} - for key in item.keys(): - if item.key_type(key) == item.DATE: - date = item.get_as_date(key) - info[key] = time.strftime(date_format, date) - info[key + "_iso"] = time.strftime(TIMEFMT_ISO, date) - info[key + "_822"] = time.strftime(TIMEFMT_822, date) - else: - info[key] = item[key] - if 'title' in item.keys(): - info['title_plain'] = stripHtml(info['title']).result - - return info - - -class Planet: - """A set of channels. - - This class represents a set of channels for which the items will - be aggregated together into one combined feed. - - Properties: - user_agent User-Agent header to fetch feeds with. - cache_directory Directory to store cached channels in. - new_feed_items Number of items to display from a new feed. - filter A regular expression that articles must match. - exclude A regular expression that articles must not match. - """ - def __init__(self, config): - self.config = config - - self._channels = [] - - self.user_agent = USER_AGENT - self.cache_directory = CACHE_DIRECTORY - self.new_feed_items = NEW_FEED_ITEMS - self.filter = None - self.exclude = None - - def tmpl_config_get(self, template, option, default=None, raw=0, vars=None): - """Get a template value from the configuration, with a default.""" - if self.config.has_option(template, option): - return self.config.get(template, option, raw=raw, vars=None) - elif self.config.has_option("Planet", option): - return self.config.get("Planet", option, raw=raw, vars=None) - else: - return default - - def gather_channel_info(self, template_file="Planet"): - date_format = self.tmpl_config_get(template_file, - "date_format", DATE_FORMAT, raw=1) - - activity_threshold = int(self.tmpl_config_get(template_file, - "activity_threshold", - ACTIVITY_THRESHOLD)) - - if activity_threshold: - activity_horizon = \ - time.gmtime(time.time()-86400*activity_threshold) - else: - activity_horizon = 0 - - channels = {} - channels_list = [] - for channel in self.channels(hidden=1): - channels[channel] = template_info(channel, date_format) - channels_list.append(channels[channel]) - - # identify inactive feeds - if activity_horizon: - latest = channel.items(sorted=1) - if len(latest)==0 or latest[0].date < activity_horizon: - channels[channel]["message"] = \ - "no activity in %d days" % activity_threshold - - # report channel level errors - if not channel.url_status: continue - status = int(channel.url_status) - if status == 403: - channels[channel]["message"] = "403: forbidden" - elif status == 404: - channels[channel]["message"] = "404: not found" - elif status == 408: - channels[channel]["message"] = "408: request timeout" - elif status == 410: - channels[channel]["message"] = "410: gone" - elif status == 500: - channels[channel]["message"] = "internal server error" - elif status >= 400: - channels[channel]["message"] = "http status %s" % status - - return channels, channels_list - - def gather_items_info(self, channels, template_file="Planet", channel_list=None): - items_list = [] - prev_date = [] - prev_channel = None - - date_format = self.tmpl_config_get(template_file, - "date_format", DATE_FORMAT, raw=1) - items_per_page = int(self.tmpl_config_get(template_file, - "items_per_page", ITEMS_PER_PAGE)) - days_per_page = int(self.tmpl_config_get(template_file, - "days_per_page", DAYS_PER_PAGE)) - new_date_format = self.tmpl_config_get(template_file, - "new_date_format", NEW_DATE_FORMAT, raw=1) - - for newsitem in self.items(max_items=items_per_page, - max_days=days_per_page, - channels=channel_list): - newsitem.date = time.localtime(time.mktime(newsitem.date)+7200) - item_info = template_info(newsitem, date_format) - chan_info = channels[newsitem._channel] - for k, v in chan_info.items(): - item_info["channel_" + k] = v - - # Check for the start of a new day - if prev_date[:3] != newsitem.date[:3]: - prev_date = newsitem.date - item_info["new_date"] = time.strftime(new_date_format, - newsitem.date) - - # Check for the start of a new channel - if item_info.has_key("new_date") \ - or prev_channel != newsitem._channel: - prev_channel = newsitem._channel - item_info["new_channel"] = newsitem._channel.url - - items_list.append(item_info) - - return items_list - - def run(self, planet_name, planet_link, template_files, offline = False): - log = logging.getLogger("planet.runner") - - # Create a planet - log.info("Loading cached data") - if self.config.has_option("Planet", "cache_directory"): - self.cache_directory = self.config.get("Planet", "cache_directory") - if self.config.has_option("Planet", "new_feed_items"): - self.new_feed_items = int(self.config.get("Planet", "new_feed_items")) - self.user_agent = "%s +%s %s" % (planet_name, planet_link, - self.user_agent) - if self.config.has_option("Planet", "filter"): - self.filter = self.config.get("Planet", "filter") - - # The other configuration blocks are channels to subscribe to - for feed_url in self.config.sections(): - if feed_url == "Planet" or feed_url in template_files: - continue - - # Create a channel, configure it and subscribe it - channel = Channel(self, feed_url) - self.subscribe(channel) - - # Update it - try: - if not offline and not channel.url_status == '410': - channel.update() - except KeyboardInterrupt: - raise - except: - log.exception("Update of <%s> failed", feed_url) - - def generate_all_files(self, template_files, planet_name, - planet_link, planet_feed, owner_name, owner_email): - - log = logging.getLogger("planet.runner") - # Go-go-gadget-template - for template_file in template_files: - manager = htmltmpl.TemplateManager() - log.info("Processing template %s", template_file) - template = manager.prepare(template_file) - # Read the configuration - output_dir = self.tmpl_config_get(template_file, - "output_dir", OUTPUT_DIR) - date_format = self.tmpl_config_get(template_file, - "date_format", DATE_FORMAT, raw=1) - encoding = self.tmpl_config_get(template_file, "encoding", ENCODING) - - # We treat each template individually - base = os.path.splitext(os.path.basename(template_file))[0] - url = os.path.join(planet_link, base) - output_file = os.path.join(output_dir, base) - - # Gather information - channels, channels_list = self.gather_channel_info(template_file) - items_list = self.gather_items_info(channels, template_file) - - # Gather item information - - # Process the template - tp = htmltmpl.TemplateProcessor(html_escape=0) - tp.set("Items", items_list) - tp.set("Channels", channels_list) - - # Generic information - tp.set("generator", VERSION) - tp.set("name", planet_name) - tp.set("link", planet_link) - tp.set("owner_name", owner_name) - tp.set("owner_email", owner_email) - tp.set("url", url) - - if planet_feed: - tp.set("feed", planet_feed) - tp.set("feedtype", planet_feed.find('rss')>=0 and 'rss' or 'atom') - - # Update time - date = time.localtime() - tp.set("date", time.strftime(date_format, date)) - tp.set("date_iso", time.strftime(TIMEFMT_ISO, date)) - tp.set("date_822", time.strftime(TIMEFMT_822, date)) - - try: - log.info("Writing %s", output_file) - output_fd = open(output_file, "w") - if encoding.lower() in ("utf-8", "utf8"): - # UTF-8 output is the default because we use that internally - output_fd.write(tp.process(template)) - elif encoding.lower() in ("xml", "html", "sgml"): - # Magic for Python 2.3 users - output = tp.process(template).decode("utf-8") - output_fd.write(output.encode("ascii", "xmlcharrefreplace")) - else: - # Must be a "known" encoding - output = tp.process(template).decode("utf-8") - output_fd.write(output.encode(encoding, "replace")) - output_fd.close() - except KeyboardInterrupt: - raise - except: - log.exception("Write of %s failed", output_file) - - def channels(self, hidden=0, sorted=1): - """Return the list of channels.""" - channels = [] - for channel in self._channels: - if hidden or not channel.has_key("hidden"): - channels.append((channel.name, channel)) - - if sorted: - locale.setlocale(locale.LC_ALL,"tr_TR.UTF-8") - channels.sort(key=lambda x: locale.strxfrm(x[0])) - locale.setlocale(locale.LC_ALL,"C") - - - return [ c[-1] for c in channels ] - - def find_by_basename(self, basename): - for channel in self._channels: - if basename == channel.cache_basename(): return channel - - def subscribe(self, channel): - """Subscribe the planet to the channel.""" - self._channels.append(channel) - - def unsubscribe(self, channel): - """Unsubscribe the planet from the channel.""" - self._channels.remove(channel) - - def items(self, hidden=0, sorted=1, max_items=0, max_days=0, channels=None): - """Return an optionally filtered list of items in the channel. - - The filters are applied in the following order: - - If hidden is true then items in hidden channels and hidden items - will be returned. - - If sorted is true then the item list will be sorted with the newest - first. - - If max_items is non-zero then this number of items, at most, will - be returned. - - If max_days is non-zero then any items older than the newest by - this number of days won't be returned. Requires sorted=1 to work. - - - The sharp-eyed will note that this looks a little strange code-wise, - it turns out that Python gets *really* slow if we try to sort the - actual items themselves. Also we use mktime here, but it's ok - because we discard the numbers and just need them to be relatively - consistent between each other. - """ - planet_filter_re = None - if self.filter: - planet_filter_re = re.compile(self.filter, re.I) - planet_exclude_re = None - if self.exclude: - planet_exclude_re = re.compile(self.exclude, re.I) - - items = [] - seen_guids = {} - if not channels: channels=self.channels(hidden=hidden, sorted=0) - for channel in channels: - for item in channel._items.values(): - if hidden or not item.has_key("hidden"): - - channel_filter_re = None - if channel.filter: - channel_filter_re = re.compile(channel.filter, - re.I) - channel_exclude_re = None - if channel.exclude: - channel_exclude_re = re.compile(channel.exclude, - re.I) - if (planet_filter_re or planet_exclude_re \ - or channel_filter_re or channel_exclude_re): - title = "" - if item.has_key("title"): - title = item.title - content = item.get_content("content") - - if planet_filter_re: - if not (planet_filter_re.search(title) \ - or planet_filter_re.search(content)): - continue - - if planet_exclude_re: - if (planet_exclude_re.search(title) \ - or planet_exclude_re.search(content)): - continue - - if channel_filter_re: - if not (channel_filter_re.search(title) \ - or channel_filter_re.search(content)): - continue - - if channel_exclude_re: - if (channel_exclude_re.search(title) \ - or channel_exclude_re.search(content)): - continue - - if not seen_guids.has_key(item.id): - seen_guids[item.id] = 1; - items.append((time.mktime(item.date), item.order, item)) - - # Sort the list - if sorted: - items.sort() - items.reverse() - - # Apply max_items filter - if len(items) and max_items: - items = items[:max_items] - - # Apply max_days filter - if len(items) and max_days: - max_count = 0 - max_time = items[0][0] - max_days * 84600 - for item in items: - if item[0] > max_time: - max_count += 1 - else: - items = items[:max_count] - break - - return [ i[-1] for i in items ] - -class Channel(cache.CachedInfo): - """A list of news items. - - This class represents a list of news items taken from the feed of - a website or other source. - - Properties: - url URL of the feed. - url_etag E-Tag of the feed URL. - url_modified Last modified time of the feed URL. - url_status Last HTTP status of the feed URL. - hidden Channel should be hidden (True if exists). - name Name of the feed owner, or feed title. - next_order Next order number to be assigned to NewsItem - - updated Correct UTC-Normalised update time of the feed. - last_updated Correct UTC-Normalised time the feed was last updated. - - id An identifier the feed claims is unique (*). - title One-line title (*). - link Link to the original format feed (*). - tagline Short description of the feed (*). - info Longer description of the feed (*). - - modified Date the feed claims to have been modified (*). - - author Name of the author (*). - publisher Name of the publisher (*). - generator Name of the feed generator (*). - category Category name (*). - copyright Copyright information for humans to read (*). - license Link to the licence for the content (*). - docs Link to the specification of the feed format (*). - language Primary language (*). - errorreportsto E-Mail address to send error reports to (*). - - image_url URL of an associated image (*). - image_link Link to go with the associated image (*). - image_title Alternative text of the associated image (*). - image_width Width of the associated image (*). - image_height Height of the associated image (*). - - filter A regular expression that articles must match. - exclude A regular expression that articles must not match. - - Properties marked (*) will only be present if the original feed - contained them. Note that the optional 'modified' date field is simply - a claim made by the item and parsed from the information given, 'updated' - (and 'last_updated') are far more reliable sources of information. - - Some feeds may define additional properties to those above. - """ - IGNORE_KEYS = ("links", "contributors", "textinput", "cloud", "categories", - "url", "href", "url_etag", "url_modified", "tags", "itunes_explicit") - - def __init__(self, planet, url): - if not os.path.isdir(planet.cache_directory): - os.makedirs(planet.cache_directory) - cache_filename = cache.filename(planet.cache_directory, url) - cache_file = dbhash.open(cache_filename, "c", 0666) - - cache.CachedInfo.__init__(self, cache_file, url, root=1) - - self._items = {} - self._planet = planet - self._expired = [] - self.url = url - # retain the original URL for error reporting - self.configured_url = url - self.url_etag = None - self.url_status = None - self.url_modified = None - self.name = None - self.updated = None - self.last_updated = None - self.filter = None - self.exclude = None - self.next_order = "0" - self.cache_read() - self.cache_read_entries() - - if planet.config.has_section(url): - for option in planet.config.options(url): - value = planet.config.get(url, option) - self.set_as_string(option, value, cached=0) - - def has_item(self, id_): - """Check whether the item exists in the channel.""" - return self._items.has_key(id_) - - def get_item(self, id_): - """Return the item from the channel.""" - return self._items[id_] - - # Special methods - __contains__ = has_item - - def items(self, hidden=0, sorted=0): - """Return the item list.""" - items = [] - for item in self._items.values(): - if hidden or not item.has_key("hidden"): - items.append((time.mktime(item.date), item.order, item)) - - if sorted: - items.sort() - items.reverse() - - return [ i[-1] for i in items ] - - def __iter__(self): - """Iterate the sorted item list.""" - return iter(self.items(sorted=1)) - - def cache_read_entries(self): - """Read entry information from the cache.""" - keys = self._cache.keys() - for key in keys: - if key.find(" ") != -1: continue - if self.has_key(key): continue - - item = NewsItem(self, key) - self._items[key] = item - - def cache_basename(self): - return cache.filename('',self._id) - - def cache_write(self, sync=1): - """Write channel and item information to the cache.""" - for item in self._items.values(): - item.cache_write(sync=0) - for item in self._expired: - item.cache_clear(sync=0) - cache.CachedInfo.cache_write(self, sync) - - self._expired = [] - - def feed_information(self): - """ - Returns a description string for the feed embedded in this channel. - - This will usually simply be the feed url embedded in <>, but in the - case where the current self.url has changed from the original - self.configured_url the string will contain both pieces of information. - This is so that the URL in question is easier to find in logging - output: getting an error about a URL that doesn't appear in your config - file is annoying. - """ - if self.url == self.configured_url: - return "<%s>" % self.url - else: - return "<%s> (formerly <%s>)" % (self.url, self.configured_url) - - def update(self): - """Download the feed to refresh the information. - - This does the actual work of pulling down the feed and if it changes - updates the cached information about the feed and entries within it. - """ - info = feedparser.parse(self.url, - etag=self.url_etag, modified=self.url_modified, - agent=self._planet.user_agent) - if info.has_key("status"): - self.url_status = str(info.status) - elif info.has_key("entries") and len(info.entries)>0: - self.url_status = str(200) - elif info.bozo and info.bozo_exception.__class__.__name__=='Timeout': - self.url_status = str(408) - else: - self.url_status = str(500) - - if self.url_status == '301' and (info.has_key("entries") and len(info.entries)>0): - if self.url != info.url: - log.warning("Feed has moved from <%s> to <%s>", self.url, info.url) - os.link(cache.filename(self._planet.cache_directory, self.url), - cache.filename(self._planet.cache_directory, info.url)) -            self.url != info.url - elif self.url_status == '304': - log.info("Feed %s unchanged", self.feed_information()) - return - elif self.url_status == '410': - log.info("Feed %s gone", self.feed_information()) - self.cache_write() - return - elif self.url_status == '408': - log.warning("Feed %s timed out", self.feed_information()) - return - elif int(self.url_status) >= 400: - log.error("Error %s while updating feed %s", - self.url_status, self.feed_information()) - return - else: - log.info("Updating feed %s", self.feed_information()) - - self.url_etag = info.has_key("etag") and info.etag or None - self.url_modified = info.has_key("modified") and info.modified or None - if self.url_etag is not None: - log.debug("E-Tag: %s", self.url_etag) - if self.url_modified is not None: - log.debug("Last Modified: %s", - time.strftime(TIMEFMT_ISO, self.url_modified)) - - self.update_info(info.feed) - self.update_entries(info.entries) - self.cache_write() - - def update_info(self, feed): - """Update information from the feed. - - This reads the feed information supplied by feedparser and updates - the cached information about the feed. These are the various - potentially interesting properties that you might care about. - """ - for key in feed.keys(): - if key in self.IGNORE_KEYS or key + "_parsed" in self.IGNORE_KEYS: - # Ignored fields - pass - elif feed.has_key(key + "_parsed"): - # Ignore unparsed date fields - pass - elif key.endswith("_detail"): - # retain name and email sub-fields - if feed[key].has_key('name') and feed[key].name: - self.set_as_string(key.replace("_detail","_name"), \ - feed[key].name) - if feed[key].has_key('email') and feed[key].email: - self.set_as_string(key.replace("_detail","_email"), \ - feed[key].email) - elif key == "items": - # Ignore items field - pass - elif key.endswith("_parsed"): - # Date fields - if feed[key] is not None: - self.set_as_date(key[:-len("_parsed")], feed[key]) - elif key == "image": - # Image field: save all the information - if feed[key].has_key("url"): - self.set_as_string(key + "_url", feed[key].url) - if feed[key].has_key("link"): - self.set_as_string(key + "_link", feed[key].link) - if feed[key].has_key("title"): - self.set_as_string(key + "_title", feed[key].title) - if feed[key].has_key("width"): - self.set_as_string(key + "_width", str(feed[key].width)) - if feed[key].has_key("height"): - self.set_as_string(key + "_height", str(feed[key].height)) - elif isinstance(feed[key], (str, unicode)): - # String fields - try: - detail = key + '_detail' - if feed.has_key(detail) and feed[detail].has_key('type'): - if feed[detail].type == 'text/html': - feed[key] = sanitize.HTML(feed[key]) - elif feed[detail].type == 'text/plain': - feed[key] = xml.sax.saxutils.escape(feed[key]) - self.set_as_string(key, feed[key]) - except KeyboardInterrupt: - raise - except: - log.exception("Ignored '%s' of <%s>, unknown format", - key, self.url) - - def update_entries(self, entries): - """Update entries from the feed. - - This reads the entries supplied by feedparser and updates the - cached information about them. It's at this point we update - the 'updated' timestamp and keep the old one in 'last_updated', - these provide boundaries for acceptable entry times. - - If this is the first time a feed has been updated then most of the - items will be marked as hidden, according to Planet.new_feed_items. - - If the feed does not contain items which, according to the sort order, - should be there; those items are assumed to have been expired from - the feed or replaced and are removed from the cache. - """ - if not len(entries): - return - - self.last_updated = self.updated - self.updated = time.gmtime() - - new_items = [] - feed_items = [] - for entry in entries: - # Try really hard to find some kind of unique identifier - if entry.has_key("id"): - entry_id = cache.utf8(entry.id) - elif entry.has_key("link"): - entry_id = cache.utf8(entry.link) - elif entry.has_key("title"): - entry_id = (self.url + "/" - + md5.new(cache.utf8(entry.title)).hexdigest()) - elif entry.has_key("summary"): - entry_id = (self.url + "/" - + md5.new(cache.utf8(entry.summary)).hexdigest()) - else: - log.error("Unable to find or generate id, entry ignored") - continue - - # Create the item if necessary and update - if self.has_item(entry_id): - item = self._items[entry_id] - else: - item = NewsItem(self, entry_id) - self._items[entry_id] = item - new_items.append(item) - item.update(entry) - feed_items.append(entry_id) - - # Hide excess items the first time through - if self.last_updated is None and self._planet.new_feed_items \ - and len(feed_items) > self._planet.new_feed_items: - item.hidden = "yes" - log.debug("Marked <%s> as hidden (new feed)", entry_id) - - # Assign order numbers in reverse - new_items.reverse() - for item in new_items: - item.order = self.next_order = str(int(self.next_order) + 1) - - # Check for expired or replaced items - feed_count = len(feed_items) - log.debug("Items in Feed: %d", feed_count) - for item in self.items(sorted=1): - if feed_count < 1: - break - elif item.id in feed_items: - feed_count -= 1 - elif item._channel.url_status != '226': - del(self._items[item.id]) - self._expired.append(item) - log.debug("Removed expired or replaced item <%s>", item.id) - - def get_name(self, key): - """Return the key containing the name.""" - for key in ("name", "title"): - if self.has_key(key) and self.key_type(key) != self.NULL: - return self.get_as_string(key) - - return "" - -class NewsItem(cache.CachedInfo): - """An item of news. - - This class represents a single item of news on a channel. They're - created by members of the Channel class and accessible through it. - - Properties: - id Channel-unique identifier for this item. - id_hash Relatively short, printable cryptographic hash of id - date Corrected UTC-Normalised update time, for sorting. - order Order in which items on the same date can be sorted. - hidden Item should be hidden (True if exists). - - title One-line title (*). - link Link to the original format text (*). - summary Short first-page summary (*). - content Full HTML content. - - modified Date the item claims to have been modified (*). - issued Date the item claims to have been issued (*). - created Date the item claims to have been created (*). - expired Date the item claims to expire (*). - - author Name of the author (*). - publisher Name of the publisher (*). - category Category name (*). - comments Link to a page to enter comments (*). - license Link to the licence for the content (*). - source_name Name of the original source of this item (*). - source_link Link to the original source of this item (*). - - Properties marked (*) will only be present if the original feed - contained them. Note that the various optional date fields are - simply claims made by the item and parsed from the information - given, 'date' is a far more reliable source of information. - - Some feeds may define additional properties to those above. - """ - IGNORE_KEYS = ("categories", "contributors", "enclosures", "links", - "guidislink", "date", "tags") - - def __init__(self, channel, id_): - cache.CachedInfo.__init__(self, channel._cache, id_) - - self._channel = channel - self.id = id_ - self.id_hash = md5.new(id_).hexdigest() - self.date = None - self.order = None - self.content = None - self.cache_read() - - def update(self, entry): - """Update the item from the feedparser entry given.""" - for key in entry.keys(): - if key in self.IGNORE_KEYS or key + "_parsed" in self.IGNORE_KEYS: - # Ignored fields - pass - elif entry.has_key(key + "_parsed"): - # Ignore unparsed date fields - pass - elif key.endswith("_detail"): - # retain name, email, and language sub-fields - if entry[key].has_key('name') and entry[key].name: - self.set_as_string(key.replace("_detail","_name"), \ - entry[key].name) - if entry[key].has_key('email') and entry[key].email: - self.set_as_string(key.replace("_detail","_email"), \ - entry[key].email) - if entry[key].has_key('language') and entry[key].language and \ - (not self._channel.has_key('language') or \ - entry[key].language != self._channel.language): - self.set_as_string(key.replace("_detail","_language"), \ - entry[key].language) - elif key.endswith("_parsed"): - # Date fields - if entry[key] is not None: - self.set_as_date(key[:-len("_parsed")], entry[key]) - elif key == "source": - # Source field: save both url and value - if entry[key].has_key("value"): - self.set_as_string(key + "_name", entry[key].value) - if entry[key].has_key("url"): - self.set_as_string(key + "_link", entry[key].url) - elif key == "content": - # Content field: concatenate the values - value = "" - for item in entry[key]: - if item.type == 'text/html': - item.value = sanitize.HTML(item.value) - elif item.type == 'text/plain': - item.value = xml.sax.saxutils.escape(item.value) - if item.has_key('language') and item.language and \ - (not self._channel.has_key('language') or - item.language != self._channel.language) : - self.set_as_string(key + "_language", item.language) - value += cache.utf8(item.value) - self.set_as_string(key, value) - elif isinstance(entry[key], (str, unicode)): - # String fields - try: - detail = key + '_detail' - if entry.has_key(detail): - if entry[detail].has_key('type'): - if entry[detail].type == 'text/html': - entry[key] = sanitize.HTML(entry[key]) - elif entry[detail].type == 'text/plain': - entry[key] = xml.sax.saxutils.escape(entry[key]) - self.set_as_string(key, entry[key]) - except KeyboardInterrupt: - raise - except: - log.exception("Ignored '%s' of <%s>, unknown format", - key, self.id) - - # Generate the date field if we need to - self.get_date("date") - - def get_date(self, key): - """Get (or update) the date key. - - We check whether the date the entry claims to have been changed is - since we last updated this feed and when we pulled the feed off the - site. - - If it is then it's probably not bogus, and we'll sort accordingly. - - If it isn't then we bound it appropriately, this ensures that - entries appear in posting sequence but don't overlap entries - added in previous updates and don't creep into the next one. - """ - - for other_key in ("updated", "modified", "published", "issued", "created"): - if self.has_key(other_key): - date = self.get_as_date(other_key) - break - else: - date = None - - if date is not None: - if date > self._channel.updated: - date = self._channel.updated -# elif date < self._channel.last_updated: -# date = self._channel.updated - elif self.has_key(key) and self.key_type(key) != self.NULL: - return self.get_as_date(key) - else: - date = self._channel.updated - - self.set_as_date(key, date) - return date - - def get_content(self, key): - """Return the key containing the content.""" - for key in ("content", "tagline", "summary"): - if self.has_key(key) and self.key_type(key) != self.NULL: - return self.get_as_string(key) - - return "" diff --git a/planet/__init__.py.orig b/planet/__init__.py.orig deleted file mode 100644 index 929920b..0000000 --- a/planet/__init__.py.orig +++ /dev/null @@ -1,953 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -"""Planet aggregator library. - -This package is a library for developing web sites or software that -aggregate RSS, CDF and Atom feeds taken from elsewhere into a single, -combined feed. -""" - -__version__ = "2.0" -__authors__ = [ "Scott James Remnant ", - "Jeff Waugh " ] -__license__ = "Python" - - -# Modules available without separate import -import cache -import feedparser -import sanitize -import htmltmpl -import sgmllib -try: - import logging -except: - import compat_logging as logging - -# Limit the effect of "from planet import *" -__all__ = ("cache", "feedparser", "htmltmpl", "logging", - "Planet", "Channel", "NewsItem") - - -import os -import md5 -import time -import dbhash -import re - -try: - from xml.sax.saxutils import escape -except: - def escape(data): - return data.replace("&","&").replace(">",">").replace("<","<") - -# Version information (for generator headers) -VERSION = ("Planet/%s +http://www.planetplanet.org" % __version__) - -# Default User-Agent header to send when retreiving feeds -USER_AGENT = VERSION + " " + feedparser.USER_AGENT - -# Default cache directory -CACHE_DIRECTORY = "cache" - -# Default number of items to display from a new feed -NEW_FEED_ITEMS = 10 - -# Useful common date/time formats -TIMEFMT_ISO = "%Y-%m-%dT%H:%M:%S+00:00" -TIMEFMT_822 = "%a, %d %b %Y %H:%M:%S +0000" - - -# Log instance to use here -log = logging.getLogger("planet") -try: - log.warning -except: - log.warning = log.warn - -# Defaults for the template file config sections -ENCODING = "utf-8" -ITEMS_PER_PAGE = 60 -DAYS_PER_PAGE = 0 -OUTPUT_DIR = "output" -DATE_FORMAT = "%B %d, %Y %I:%M %p" -NEW_DATE_FORMAT = "%B %d, %Y" -ACTIVITY_THRESHOLD = 0 - -class stripHtml(sgmllib.SGMLParser): - "remove all tags from the data" - def __init__(self, data): - sgmllib.SGMLParser.__init__(self) - self.result='' - self.feed(data) - self.close() - def handle_data(self, data): - if data: self.result+=data - -def template_info(item, date_format): - """Produce a dictionary of template information.""" - info = {} - for key in item.keys(): - if item.key_type(key) == item.DATE: - date = item.get_as_date(key) - info[key] = time.strftime(date_format, date) - info[key + "_iso"] = time.strftime(TIMEFMT_ISO, date) - info[key + "_822"] = time.strftime(TIMEFMT_822, date) - else: - info[key] = item[key] - if 'title' in item.keys(): - info['title_plain'] = stripHtml(info['title']).result - - return info - - -class Planet: - """A set of channels. - - This class represents a set of channels for which the items will - be aggregated together into one combined feed. - - Properties: - user_agent User-Agent header to fetch feeds with. - cache_directory Directory to store cached channels in. - new_feed_items Number of items to display from a new feed. - filter A regular expression that articles must match. - exclude A regular expression that articles must not match. - """ - def __init__(self, config): - self.config = config - - self._channels = [] - - self.user_agent = USER_AGENT - self.cache_directory = CACHE_DIRECTORY - self.new_feed_items = NEW_FEED_ITEMS - self.filter = None - self.exclude = None - - def tmpl_config_get(self, template, option, default=None, raw=0, vars=None): - """Get a template value from the configuration, with a default.""" - if self.config.has_option(template, option): - return self.config.get(template, option, raw=raw, vars=None) - elif self.config.has_option("Planet", option): - return self.config.get("Planet", option, raw=raw, vars=None) - else: - return default - - def gather_channel_info(self, template_file="Planet"): - date_format = self.tmpl_config_get(template_file, - "date_format", DATE_FORMAT, raw=1) - - activity_threshold = int(self.tmpl_config_get(template_file, - "activity_threshold", - ACTIVITY_THRESHOLD)) - - if activity_threshold: - activity_horizon = \ - time.gmtime(time.time()-86400*activity_threshold) - else: - activity_horizon = 0 - - channels = {} - channels_list = [] - for channel in self.channels(hidden=1): - channels[channel] = template_info(channel, date_format) - channels_list.append(channels[channel]) - - # identify inactive feeds - if activity_horizon: - latest = channel.items(sorted=1) - if len(latest)==0 or latest[0].date < activity_horizon: - channels[channel]["message"] = \ - "no activity in %d days" % activity_threshold - - # report channel level errors - if not channel.url_status: continue - status = int(channel.url_status) - if status == 403: - channels[channel]["message"] = "403: forbidden" - elif status == 404: - channels[channel]["message"] = "404: not found" - elif status == 408: - channels[channel]["message"] = "408: request timeout" - elif status == 410: - channels[channel]["message"] = "410: gone" - elif status == 500: - channels[channel]["message"] = "internal server error" - elif status >= 400: - channels[channel]["message"] = "http status %s" % status - - return channels, channels_list - - def gather_items_info(self, channels, template_file="Planet", channel_list=None): - items_list = [] - prev_date = [] - prev_channel = None - - date_format = self.tmpl_config_get(template_file, - "date_format", DATE_FORMAT, raw=1) - items_per_page = int(self.tmpl_config_get(template_file, - "items_per_page", ITEMS_PER_PAGE)) - days_per_page = int(self.tmpl_config_get(template_file, - "days_per_page", DAYS_PER_PAGE)) - new_date_format = self.tmpl_config_get(template_file, - "new_date_format", NEW_DATE_FORMAT, raw=1) - - for newsitem in self.items(max_items=items_per_page, - max_days=days_per_page, - channels=channel_list): - item_info = template_info(newsitem, date_format) - chan_info = channels[newsitem._channel] - for k, v in chan_info.items(): - item_info["channel_" + k] = v - - # Check for the start of a new day - if prev_date[:3] != newsitem.date[:3]: - prev_date = newsitem.date - item_info["new_date"] = time.strftime(new_date_format, - newsitem.date) - - # Check for the start of a new channel - if item_info.has_key("new_date") \ - or prev_channel != newsitem._channel: - prev_channel = newsitem._channel - item_info["new_channel"] = newsitem._channel.url - - items_list.append(item_info) - - return items_list - - def run(self, planet_name, planet_link, template_files, offline = False): - log = logging.getLogger("planet.runner") - - # Create a planet - log.info("Loading cached data") - if self.config.has_option("Planet", "cache_directory"): - self.cache_directory = self.config.get("Planet", "cache_directory") - if self.config.has_option("Planet", "new_feed_items"): - self.new_feed_items = int(self.config.get("Planet", "new_feed_items")) - self.user_agent = "%s +%s %s" % (planet_name, planet_link, - self.user_agent) - if self.config.has_option("Planet", "filter"): - self.filter = self.config.get("Planet", "filter") - - # The other configuration blocks are channels to subscribe to - for feed_url in self.config.sections(): - if feed_url == "Planet" or feed_url in template_files: - continue - - # Create a channel, configure it and subscribe it - channel = Channel(self, feed_url) - self.subscribe(channel) - - # Update it - try: - if not offline and not channel.url_status == '410': - channel.update() - except KeyboardInterrupt: - raise - except: - log.exception("Update of <%s> failed", feed_url) - - def generate_all_files(self, template_files, planet_name, - planet_link, planet_feed, owner_name, owner_email): - - log = logging.getLogger("planet.runner") - # Go-go-gadget-template - for template_file in template_files: - manager = htmltmpl.TemplateManager() - log.info("Processing template %s", template_file) - try: - template = manager.prepare(template_file) - except htmltmpl.TemplateError: - template = manager.prepare(os.path.basename(template_file)) - # Read the configuration - output_dir = self.tmpl_config_get(template_file, - "output_dir", OUTPUT_DIR) - date_format = self.tmpl_config_get(template_file, - "date_format", DATE_FORMAT, raw=1) - encoding = self.tmpl_config_get(template_file, "encoding", ENCODING) - - # We treat each template individually - base = os.path.splitext(os.path.basename(template_file))[0] - url = os.path.join(planet_link, base) - output_file = os.path.join(output_dir, base) - - # Gather information - channels, channels_list = self.gather_channel_info(template_file) - items_list = self.gather_items_info(channels, template_file) - - # Gather item information - - # Process the template - tp = htmltmpl.TemplateProcessor(html_escape=0) - tp.set("Items", items_list) - tp.set("Channels", channels_list) - - # Generic information - tp.set("generator", VERSION) - tp.set("name", planet_name) - tp.set("link", planet_link) - tp.set("owner_name", owner_name) - tp.set("owner_email", owner_email) - tp.set("url", url) - - if planet_feed: - tp.set("feed", planet_feed) - tp.set("feedtype", planet_feed.find('rss')>=0 and 'rss' or 'atom') - - # Update time - date = time.gmtime() - tp.set("date", time.strftime(date_format, date)) - tp.set("date_iso", time.strftime(TIMEFMT_ISO, date)) - tp.set("date_822", time.strftime(TIMEFMT_822, date)) - - try: - log.info("Writing %s", output_file) - output_fd = open(output_file, "w") - if encoding.lower() in ("utf-8", "utf8"): - # UTF-8 output is the default because we use that internally - output_fd.write(tp.process(template)) - elif encoding.lower() in ("xml", "html", "sgml"): - # Magic for Python 2.3 users - output = tp.process(template).decode("utf-8") - output_fd.write(output.encode("ascii", "xmlcharrefreplace")) - else: - # Must be a "known" encoding - output = tp.process(template).decode("utf-8") - output_fd.write(output.encode(encoding, "replace")) - output_fd.close() - except KeyboardInterrupt: - raise - except: - log.exception("Write of %s failed", output_file) - - def channels(self, hidden=0, sorted=1): - """Return the list of channels.""" - channels = [] - for channel in self._channels: - if hidden or not channel.has_key("hidden"): - channels.append((channel.name, channel)) - - if sorted: - channels.sort() - - return [ c[-1] for c in channels ] - - def find_by_basename(self, basename): - for channel in self._channels: - if basename == channel.cache_basename(): return channel - - def subscribe(self, channel): - """Subscribe the planet to the channel.""" - self._channels.append(channel) - - def unsubscribe(self, channel): - """Unsubscribe the planet from the channel.""" - self._channels.remove(channel) - - def items(self, hidden=0, sorted=1, max_items=0, max_days=0, channels=None): - """Return an optionally filtered list of items in the channel. - - The filters are applied in the following order: - - If hidden is true then items in hidden channels and hidden items - will be returned. - - If sorted is true then the item list will be sorted with the newest - first. - - If max_items is non-zero then this number of items, at most, will - be returned. - - If max_days is non-zero then any items older than the newest by - this number of days won't be returned. Requires sorted=1 to work. - - - The sharp-eyed will note that this looks a little strange code-wise, - it turns out that Python gets *really* slow if we try to sort the - actual items themselves. Also we use mktime here, but it's ok - because we discard the numbers and just need them to be relatively - consistent between each other. - """ - planet_filter_re = None - if self.filter: - planet_filter_re = re.compile(self.filter, re.I) - planet_exclude_re = None - if self.exclude: - planet_exclude_re = re.compile(self.exclude, re.I) - - items = [] - seen_guids = {} - if not channels: channels=self.channels(hidden=hidden, sorted=0) - for channel in channels: - for item in channel._items.values(): - if hidden or not item.has_key("hidden"): - - channel_filter_re = None - if channel.filter: - channel_filter_re = re.compile(channel.filter, - re.I) - channel_exclude_re = None - if channel.exclude: - channel_exclude_re = re.compile(channel.exclude, - re.I) - if (planet_filter_re or planet_exclude_re \ - or channel_filter_re or channel_exclude_re): - title = "" - if item.has_key("title"): - title = item.title - content = item.get_content("content") - - if planet_filter_re: - if not (planet_filter_re.search(title) \ - or planet_filter_re.search(content)): - continue - - if planet_exclude_re: - if (planet_exclude_re.search(title) \ - or planet_exclude_re.search(content)): - continue - - if channel_filter_re: - if not (channel_filter_re.search(title) \ - or channel_filter_re.search(content)): - continue - - if channel_exclude_re: - if (channel_exclude_re.search(title) \ - or channel_exclude_re.search(content)): - continue - - if not seen_guids.has_key(item.id): - seen_guids[item.id] = 1; - items.append((time.mktime(item.date), item.order, item)) - - # Sort the list - if sorted: - items.sort() - items.reverse() - - # Apply max_items filter - if len(items) and max_items: - items = items[:max_items] - - # Apply max_days filter - if len(items) and max_days: - max_count = 0 - max_time = items[0][0] - max_days * 84600 - for item in items: - if item[0] > max_time: - max_count += 1 - else: - items = items[:max_count] - break - - return [ i[-1] for i in items ] - -class Channel(cache.CachedInfo): - """A list of news items. - - This class represents a list of news items taken from the feed of - a website or other source. - - Properties: - url URL of the feed. - url_etag E-Tag of the feed URL. - url_modified Last modified time of the feed URL. - url_status Last HTTP status of the feed URL. - hidden Channel should be hidden (True if exists). - name Name of the feed owner, or feed title. - next_order Next order number to be assigned to NewsItem - - updated Correct UTC-Normalised update time of the feed. - last_updated Correct UTC-Normalised time the feed was last updated. - - id An identifier the feed claims is unique (*). - title One-line title (*). - link Link to the original format feed (*). - tagline Short description of the feed (*). - info Longer description of the feed (*). - - modified Date the feed claims to have been modified (*). - - author Name of the author (*). - publisher Name of the publisher (*). - generator Name of the feed generator (*). - category Category name (*). - copyright Copyright information for humans to read (*). - license Link to the licence for the content (*). - docs Link to the specification of the feed format (*). - language Primary language (*). - errorreportsto E-Mail address to send error reports to (*). - - image_url URL of an associated image (*). - image_link Link to go with the associated image (*). - image_title Alternative text of the associated image (*). - image_width Width of the associated image (*). - image_height Height of the associated image (*). - - filter A regular expression that articles must match. - exclude A regular expression that articles must not match. - - Properties marked (*) will only be present if the original feed - contained them. Note that the optional 'modified' date field is simply - a claim made by the item and parsed from the information given, 'updated' - (and 'last_updated') are far more reliable sources of information. - - Some feeds may define additional properties to those above. - """ - IGNORE_KEYS = ("links", "contributors", "textinput", "cloud", "categories", - "url", "href", "url_etag", "url_modified", "tags", "itunes_explicit") - - def __init__(self, planet, url): - if not os.path.isdir(planet.cache_directory): - os.makedirs(planet.cache_directory) - cache_filename = cache.filename(planet.cache_directory, url) - cache_file = dbhash.open(cache_filename, "c", 0666) - - cache.CachedInfo.__init__(self, cache_file, url, root=1) - - self._items = {} - self._planet = planet - self._expired = [] - self.url = url - # retain the original URL for error reporting - self.configured_url = url - self.url_etag = None - self.url_status = None - self.url_modified = None - self.name = None - self.updated = None - self.last_updated = None - self.filter = None - self.exclude = None - self.next_order = "0" - self.cache_read() - self.cache_read_entries() - - if planet.config.has_section(url): - for option in planet.config.options(url): - value = planet.config.get(url, option) - self.set_as_string(option, value, cached=0) - - def has_item(self, id_): - """Check whether the item exists in the channel.""" - return self._items.has_key(id_) - - def get_item(self, id_): - """Return the item from the channel.""" - return self._items[id_] - - # Special methods - __contains__ = has_item - - def items(self, hidden=0, sorted=0): - """Return the item list.""" - items = [] - for item in self._items.values(): - if hidden or not item.has_key("hidden"): - items.append((time.mktime(item.date), item.order, item)) - - if sorted: - items.sort() - items.reverse() - - return [ i[-1] for i in items ] - - def __iter__(self): - """Iterate the sorted item list.""" - return iter(self.items(sorted=1)) - - def cache_read_entries(self): - """Read entry information from the cache.""" - keys = self._cache.keys() - for key in keys: - if key.find(" ") != -1: continue - if self.has_key(key): continue - - item = NewsItem(self, key) - self._items[key] = item - - def cache_basename(self): - return cache.filename('',self._id) - - def cache_write(self, sync=1): - """Write channel and item information to the cache.""" - for item in self._items.values(): - item.cache_write(sync=0) - for item in self._expired: - item.cache_clear(sync=0) - cache.CachedInfo.cache_write(self, sync) - - self._expired = [] - - def feed_information(self): - """ - Returns a description string for the feed embedded in this channel. - - This will usually simply be the feed url embedded in <>, but in the - case where the current self.url has changed from the original - self.configured_url the string will contain both pieces of information. - This is so that the URL in question is easier to find in logging - output: getting an error about a URL that doesn't appear in your config - file is annoying. - """ - if self.url == self.configured_url: - return "<%s>" % self.url - else: - return "<%s> (formerly <%s>)" % (self.url, self.configured_url) - - def update(self): - """Download the feed to refresh the information. - - This does the actual work of pulling down the feed and if it changes - updates the cached information about the feed and entries within it. - """ - info = feedparser.parse(self.url, - etag=self.url_etag, modified=self.url_modified, - agent=self._planet.user_agent) - if info.has_key("status"): - self.url_status = str(info.status) - elif info.has_key("entries") and len(info.entries)>0: - self.url_status = str(200) - elif info.bozo and info.bozo_exception.__class__.__name__=='Timeout': - self.url_status = str(408) - else: - self.url_status = str(500) - - if self.url_status == '301' and \ - (info.has_key("entries") and len(info.entries)>0): - log.warning("Feed has moved from <%s> to <%s>", self.url, info.url) - try: - os.link(cache.filename(self._planet.cache_directory, self.url), - cache.filename(self._planet.cache_directory, info.url)) - except: - pass - self.url = info.url - elif self.url_status == '304': - log.info("Feed %s unchanged", self.feed_information()) - return - elif self.url_status == '410': - log.info("Feed %s gone", self.feed_information()) - self.cache_write() - return - elif self.url_status == '408': - log.warning("Feed %s timed out", self.feed_information()) - return - elif int(self.url_status) >= 400: - log.error("Error %s while updating feed %s", - self.url_status, self.feed_information()) - return - else: - log.info("Updating feed %s", self.feed_information()) - - self.url_etag = info.has_key("etag") and info.etag or None - self.url_modified = info.has_key("modified") and info.modified or None - if self.url_etag is not None: - log.debug("E-Tag: %s", self.url_etag) - if self.url_modified is not None: - log.debug("Last Modified: %s", - time.strftime(TIMEFMT_ISO, self.url_modified)) - - self.update_info(info.feed) - self.update_entries(info.entries) - self.cache_write() - - def update_info(self, feed): - """Update information from the feed. - - This reads the feed information supplied by feedparser and updates - the cached information about the feed. These are the various - potentially interesting properties that you might care about. - """ - for key in feed.keys(): - if key in self.IGNORE_KEYS or key + "_parsed" in self.IGNORE_KEYS: - # Ignored fields - pass - elif feed.has_key(key + "_parsed"): - # Ignore unparsed date fields - pass - elif key.endswith("_detail"): - # retain name and email sub-fields - if feed[key].has_key('name') and feed[key].name: - self.set_as_string(key.replace("_detail","_name"), \ - feed[key].name) - if feed[key].has_key('email') and feed[key].email: - self.set_as_string(key.replace("_detail","_email"), \ - feed[key].email) - elif key == "items": - # Ignore items field - pass - elif key.endswith("_parsed"): - # Date fields - if feed[key] is not None: - self.set_as_date(key[:-len("_parsed")], feed[key]) - elif key == "image": - # Image field: save all the information - if feed[key].has_key("url"): - self.set_as_string(key + "_url", feed[key].url) - if feed[key].has_key("link"): - self.set_as_string(key + "_link", feed[key].link) - if feed[key].has_key("title"): - self.set_as_string(key + "_title", feed[key].title) - if feed[key].has_key("width"): - self.set_as_string(key + "_width", str(feed[key].width)) - if feed[key].has_key("height"): - self.set_as_string(key + "_height", str(feed[key].height)) - elif isinstance(feed[key], (str, unicode)): - # String fields - try: - detail = key + '_detail' - if feed.has_key(detail) and feed[detail].has_key('type'): - if feed[detail].type == 'text/html': - feed[key] = sanitize.HTML(feed[key]) - elif feed[detail].type == 'text/plain': - feed[key] = escape(feed[key]) - self.set_as_string(key, feed[key]) - except KeyboardInterrupt: - raise - except: - log.exception("Ignored '%s' of <%s>, unknown format", - key, self.url) - - def update_entries(self, entries): - """Update entries from the feed. - - This reads the entries supplied by feedparser and updates the - cached information about them. It's at this point we update - the 'updated' timestamp and keep the old one in 'last_updated', - these provide boundaries for acceptable entry times. - - If this is the first time a feed has been updated then most of the - items will be marked as hidden, according to Planet.new_feed_items. - - If the feed does not contain items which, according to the sort order, - should be there; those items are assumed to have been expired from - the feed or replaced and are removed from the cache. - """ - if not len(entries): - return - - self.last_updated = self.updated - self.updated = time.gmtime() - - new_items = [] - feed_items = [] - for entry in entries: - # Try really hard to find some kind of unique identifier - if entry.has_key("id"): - entry_id = cache.utf8(entry.id) - elif entry.has_key("link"): - entry_id = cache.utf8(entry.link) - elif entry.has_key("title"): - entry_id = (self.url + "/" - + md5.new(cache.utf8(entry.title)).hexdigest()) - elif entry.has_key("summary"): - entry_id = (self.url + "/" - + md5.new(cache.utf8(entry.summary)).hexdigest()) - else: - log.error("Unable to find or generate id, entry ignored") - continue - - # Create the item if necessary and update - if self.has_item(entry_id): - item = self._items[entry_id] - else: - item = NewsItem(self, entry_id) - self._items[entry_id] = item - new_items.append(item) - item.update(entry) - feed_items.append(entry_id) - - # Hide excess items the first time through - if self.last_updated is None and self._planet.new_feed_items \ - and len(feed_items) > self._planet.new_feed_items: - item.hidden = "yes" - log.debug("Marked <%s> as hidden (new feed)", entry_id) - - # Assign order numbers in reverse - new_items.reverse() - for item in new_items: - item.order = self.next_order = str(int(self.next_order) + 1) - - # Check for expired or replaced items - feed_count = len(feed_items) - log.debug("Items in Feed: %d", feed_count) - for item in self.items(sorted=1): - if feed_count < 1: - break - elif item.id in feed_items: - feed_count -= 1 - elif item._channel.url_status != '226': - del(self._items[item.id]) - self._expired.append(item) - log.debug("Removed expired or replaced item <%s>", item.id) - - def get_name(self, key): - """Return the key containing the name.""" - for key in ("name", "title"): - if self.has_key(key) and self.key_type(key) != self.NULL: - return self.get_as_string(key) - - return "" - -class NewsItem(cache.CachedInfo): - """An item of news. - - This class represents a single item of news on a channel. They're - created by members of the Channel class and accessible through it. - - Properties: - id Channel-unique identifier for this item. - id_hash Relatively short, printable cryptographic hash of id - date Corrected UTC-Normalised update time, for sorting. - order Order in which items on the same date can be sorted. - hidden Item should be hidden (True if exists). - - title One-line title (*). - link Link to the original format text (*). - summary Short first-page summary (*). - content Full HTML content. - - modified Date the item claims to have been modified (*). - issued Date the item claims to have been issued (*). - created Date the item claims to have been created (*). - expired Date the item claims to expire (*). - - author Name of the author (*). - publisher Name of the publisher (*). - category Category name (*). - comments Link to a page to enter comments (*). - license Link to the licence for the content (*). - source_name Name of the original source of this item (*). - source_link Link to the original source of this item (*). - - Properties marked (*) will only be present if the original feed - contained them. Note that the various optional date fields are - simply claims made by the item and parsed from the information - given, 'date' is a far more reliable source of information. - - Some feeds may define additional properties to those above. - """ - IGNORE_KEYS = ("categories", "contributors", "enclosures", "links", - "guidislink", "date", "tags") - - def __init__(self, channel, id_): - cache.CachedInfo.__init__(self, channel._cache, id_) - - self._channel = channel - self.id = id_ - self.id_hash = md5.new(id_).hexdigest() - self.date = None - self.order = None - self.content = None - self.cache_read() - - def update(self, entry): - """Update the item from the feedparser entry given.""" - for key in entry.keys(): - if key in self.IGNORE_KEYS or key + "_parsed" in self.IGNORE_KEYS: - # Ignored fields - pass - elif entry.has_key(key + "_parsed"): - # Ignore unparsed date fields - pass - elif key.endswith("_detail"): - # retain name, email, and language sub-fields - if entry[key].has_key('name') and entry[key].name: - self.set_as_string(key.replace("_detail","_name"), \ - entry[key].name) - if entry[key].has_key('email') and entry[key].email: - self.set_as_string(key.replace("_detail","_email"), \ - entry[key].email) - if entry[key].has_key('language') and entry[key].language and \ - (not self._channel.has_key('language') or \ - entry[key].language != self._channel.language): - self.set_as_string(key.replace("_detail","_language"), \ - entry[key].language) - elif key.endswith("_parsed"): - # Date fields - if entry[key] is not None: - self.set_as_date(key[:-len("_parsed")], entry[key]) - elif key == "source": - # Source field: save both url and value - if entry[key].has_key("value"): - self.set_as_string(key + "_name", entry[key].value) - if entry[key].has_key("url"): - self.set_as_string(key + "_link", entry[key].url) - elif key == "content": - # Content field: concatenate the values - value = "" - for item in entry[key]: - if item.type == 'text/html': - item.value = sanitize.HTML(item.value) - elif item.type == 'text/plain': - item.value = escape(item.value) - if item.has_key('language') and item.language and \ - (not self._channel.has_key('language') or - item.language != self._channel.language) : - self.set_as_string(key + "_language", item.language) - value += cache.utf8(item.value) - self.set_as_string(key, value) - elif isinstance(entry[key], (str, unicode)): - # String fields - try: - detail = key + '_detail' - if entry.has_key(detail): - if entry[detail].has_key('type'): - if entry[detail].type == 'text/html': - entry[key] = sanitize.HTML(entry[key]) - elif entry[detail].type == 'text/plain': - entry[key] = escape(entry[key]) - self.set_as_string(key, entry[key]) - except KeyboardInterrupt: - raise - except: - log.exception("Ignored '%s' of <%s>, unknown format", - key, self.id) - - # Generate the date field if we need to - self.get_date("date") - - def get_date(self, key): - """Get (or update) the date key. - - We check whether the date the entry claims to have been changed is - since we last updated this feed and when we pulled the feed off the - site. - - If it is then it's probably not bogus, and we'll sort accordingly. - - If it isn't then we bound it appropriately, this ensures that - entries appear in posting sequence but don't overlap entries - added in previous updates and don't creep into the next one. - """ - - for other_key in ("updated", "modified", "published", "issued", "created"): - if self.has_key(other_key): - date = self.get_as_date(other_key) - break - else: - date = None - - if date is not None: - if date > self._channel.updated: - date = self._channel.updated -# elif date < self._channel.last_updated: -# date = self._channel.updated - elif self.has_key(key) and self.key_type(key) != self.NULL: - return self.get_as_date(key) - else: - date = self._channel.updated - - self.set_as_date(key, date) - return date - - def get_content(self, key): - """Return the key containing the content.""" - for key in ("content", "tagline", "summary"): - if self.has_key(key) and self.key_type(key) != self.NULL: - return self.get_as_string(key) - - return "" diff --git a/www/foafroll.xml b/www/foafroll.xml index 1120855..4c75354 100644 --- a/www/foafroll.xml +++ b/www/foafroll.xml @@ -15,8 +15,8 @@ A. Murat Eren - - + + There is no silver bullet.. @@ -119,8 +119,8 @@ Alper Somuncu - - alper somuncu nokta com - IBM AIX + + @@ -379,8 +379,8 @@ Gökmen Göksel - - + + Human UNITS @@ -432,7 +432,7 @@ Hüseyin Uslu - Regular (S)expressions » linux + @@ -548,8 +548,8 @@ Levent Yalçın - - Leoman® » LKD-Gezegen + + diff --git a/www/images/planet.png b/www/images/planet.png new file mode 100644 index 0000000..96bc6d9 Binary files /dev/null and b/www/images/planet.png differ diff --git a/www/index.html b/www/index.html index 1ec339e..d64652b 100644 --- a/www/index.html +++ b/www/index.html @@ -1,359 +1,206 @@ - -Linux Gezegeni - - - - - - - - - -
- - - - -
+ + Linux Gezegeni + + + + + + + + + +
+ + +
-
-

19 Ekim 2008

+
+

23 Ekim 2008

-
- +
+ + +
+
+
+

+ +Ne onlar başka tanrının çocukları, ne de biz… +

+
+
+
+“Ne senden fazlayım / Ne senden az / Aynı macerada ayrı biraz / Gözle biçim biçim / Kalple anlar içim / Ayrı gayrı olmaz / Sen yoksan ben hiçim +Aç kardelen aç / Dağın olayım, suyun olayım / Göğün olayım aç +Her çiçeğin kar altından / Güneşe giden masalında / Yaşamak yeniden tazelenir / Yeniden anlamlanır [...]
+
+
+ + + + + + +
+
+ +
+
+
-
-
-
-

Samsung ML-1610 Mono Laser Printer

-
-
-
-Babam acilen bir lazer yazıcıya ihtiyaç duyunca bugün aşırı değerli dolara rağmen Samsung ML-1610 Mono Laser Printer aldık. Hatta o kadar acilen lazımdı ki şehirdeki Bimeks ve iki Teknosa’da bu modelden kutusu açılmamış tek bir ürün bile kalmadığından benim hiç yapmayacağım bir şeyi yapıp teşhir ürününü aldık. Gerçi karlı da çıktık. Normalde kutuyla gelen %60 [...]
-
-
- - -
-
- -
-
-
+
+ + +
+
+
+

+ +Eve gitsem de güzel müzikler dinlesem +

+
+
+
+

...diyorsanız, ama ne dinleyeceğinizi bilemiyorsanız işte size bunun için güzel bir ortam. Bu site tamamen "Yahu bu albüm güzelmiş, blog'a yazmalı" diyipte yazamadığım günlerin neticesinde ortaya çıkmış bir ortam. Her türlü arıza veya öneri için tongucyumruk <salyangoz> fazlamesai.net adresinden kontak kurmak mümkün tabii. Kod mu? Kod da yakında açılıyor. Bizi izlemeye devam edin.


+
+
+ + + + + + +
+
+ +
+
+
-
- +
+ + +
+
+
+

+ +Agile Yazılım Geliştirme ve Scrum +

+
+
+
+Hepimiz içinde bulunduğumuz projelerde çeşitli sorunlarla karşı karşıya kalıyoruz. Bu sorunlar projelerin zamanında bitirilememesine, müşterinin isteklerine uymayan yazılımlar üretilmesine ve hatta projelerin başarısız olmasına bile sebep olabiliyorlar. Ben kişisel olarak projelerin gidişatına ciddi etkilerde bulunan sorunların kaynağının geleneksel yazılım geliştirme süreçleri olduğunu düşünüyorum. İşte bu yazımda başlıktan da anlaşılabileceği gibi yazılım geliştirme süreçlerinden kaynaklanan sorunlara çözüm olarak üretilen Agile Yazılım Geliştirme'den ve Scrum'dan kısaca bahsedeceğim.

Projelerde karşılaştığım sorunlardan konumuza uygun olanları şu şekilde sıralayabilirim;
  • teknolojinin çok hızlı gelişmesi ve bu yeniliklerin projeye uygulanamaması
  • müşterilerin proje başlangıcında büyük resmin tamamını yani bütün gereksinimleri ortaya koyamamaları
  • müşterilerin gereksinimlerinin çok çabuk ve sık değişmesinden dolayı müşterilerin güncel ihtiyaçlarına cevap veremeyen bir yazılım ortaya çıkması
  • projelerin yönetiminin gittikçe daha zor ve karmaşık hale gelmesi (bir yazılım geliştirme sürecinde 102 ayrı role'un olduğunu duymuştum)
Dünyanın her köşesindeki yazılım geliştirme takımı gibi bu sorunlarla karşılaşan 17 profesyonel Amerika'nın Utah eyaletinde çözüm üretebilmek, müşteri memnuniyetini arttırabilmek ve başarısız olan projelerin oranını düşürmek için 2001 yılının Şubat ayında bir araya geliyorlar ve aşağıdaki manifestoyu ortaya koyuyorlar;

The Agile Manifesto We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

• Individuals and interactions over processes and tools
• Working software over comprehensive documentation

• Customer collaboration over contract negotiation

• Responding to change over following a plan


That is, while there is value in the items on the right, we value the items on the left more.


Copyright 2001, the Agile Manifesto authors


(daha fazla bilgi için agilemanifesto.org)

Manifestonun açıkca belirtiği gibi Agile geliştirme sürecinin amacı; plan, dökümantasyon, proses ve araçlardan ziyade müşteri memnuniyeti, çalışan yazılım, uyumlu yazılım geliştirme takımı ve müşteri isteklerinde oluşan değişikliklere göre kısa zamanda geliştirilebilecek yazılımlar üretmek (buradan Agile yazılım geliştirmenin plansız, dökümansız yazılım geliştirmeyi teşvik ettiği sonucuna varmamak gerekiyor çünkü Agile yazılım geliştirme sadece bunlardan daha önemli kavramların olduğunu vurguluyor). "Agile yazılım geliştirme" süreçlerin, dökümanların ve dizaynların proje başlangıcında tümüyle tanımlanmasını değil, geliştirme aşamasında karşılaşılan ve değişen koşullara göre gerekli kararların verilmesi gerektiğini savunuyor.

Scrum'u Agile yazılım geliştirme metodunun yukarıda bahsettiğimiz presiplerine uygun olarak geliştirilmiş ve tasarlanmış bir metod olarak tanımlayabiliriz. (Diğer metodlardan XP ve Lean Software Development hakkında detaylı bilgilere buradan ve buradan ulaşabilirsiniz). Scrum diğer agile yöntemleri gibi çok fazla kuralı olmayan, sadece belirli prensipleri olan ve kolayca projelere uygulanabilecek bir yöntem.

Scrum'un genel akış şeması;


Scrum'ı sadece yazılım geliştirmek için değil hayatta karşılaşabileceğiniz her türlü olaya uygulanabilecek bir yöntem olarak düşünebilirsiniz. Şimdi kısaca yukarıdaki şemada geçen kavramları genel bir Scrum planlaması ve akışı içinde adım adım anlatmaya çalışacağım.

1- Roller (Roles)

  • Ürün Sahibi (Product Owner)
  • Scrum Yöneticisi (Scrum Master)
  • Takım Üyesi (Team Member)

2- Toplantılar (Meetings)

  • Sprint Planlama (Sprint Planning)
  • Sprint gözden geçirme (Sprint Review)
  • Günlük Scrum toplantısı (Daily Scrum)

3- Kavramlar (Artifacts)

  • Ürün gereksinim dökümanı (Product Backlog)
  • Sprint dökümanı (Sprint Backlog)
  • Sprint kalan zaman grafiği (Burndown Chart)

Projenin başlangıç adımı olarak yazılım gereksinimlerinin (requirements, features) ürün sahibi tarafından ürün gereksinim dökümanına yazılmasını düşünebiliriz. Bu dökümanın sahibi ürün sahibidir ve gereksinimleri önceliklerine (priority) göre sıralar. Ürün sahibi bu dökümana yazılım geliştirme süresince eklemeler ve çıkarmalar yapıp öncelikleri değiştirme hakkına sahiptir. Böylece ürün sahibi değişen ihtiyaçlarına uygun olarak bir yazılıma sahip olma şansını yakalamış olur.

Gereksinimler belirlendikten sonra yazılım geliştirme takımı Sprint planlama toplantısında bir sonraki Sprint'de geliştirilmek üzere ürün gereksinim dökümanından ürün sahibinin belirlediği yüksek öncelikli gereksinimleri seçerek Sprint dökümanına aktarırlar. Bu toplantıya Scrum yöneticisi, ürün sahibi ve takım üyeleri katılırlar ve Sprint süresi en az 2 en fazla 4 hafta olarak belirlenir.

Sprint planlama toplantılarıScrum yöneticisi yönetir. Scrum yöneticisinin asıl görevi Scrum'un temel prensiplerinin projeye uygulanmasını, bu prensiplerin takım üyelerince doğru şekilde anlaşılmasını sağlamaktır. En önemli görevi ise Sprint süresince takımı dışardan gelebilecek etkilere karşı korumak ve takımın ihtiyaçlarını karşılamaktır.

Scrum her Sprint'in sonunda mutlaka ürün sahibine kullanabileceği bir yazılım sağlamayı hedefler, bundan dolayı planlanan Sprint süresi (2-4 hafta) asla uzatılmaz. Fakat eğer bir gereksinim belirlenen Sprint süresi içerisinde gerçekleştirilemeyecekse bir sonraki Sprint'e aktarılabilir. Ve aynı şekilde eğer Sprint süresi bitmeden Sprint dökümanındaki gereksinimlerin hepsi tamamlanmışsa ürün gereksinim dökümanından yeni gereksinimler Sprint dökümanına aktarılabilir.

Sprint planlama toplatısında belirlenen gereksinimler takım üyelerince küçük görevlere (tasks) bölünerek takım üyelerine geliştirilmek üzere atanır. Scrum takımı geleneksel yazılım geliştirme süreçlerinden farklı olarak kesin rollere (architect, tester, developer, disagner vb.) sahip değildir. Scrum takımındaki bütün üyeler çapraz görevlerde yer alabilirler, böylece kodun tek bir kişiye bağımlılığı riski ortadan kaldırılmış olur. Sprint dökümanının sahibi bu sefer ürün sahibi değil yazılım geliştirme takımıdır, dolayısıyla bu dökümana ürün sahibi değil takım üyeleri katkıda bulunurlar.

Sprint dökümanına aktarılan gereksinimlerin tahmini geliştirme süresi saat bazında takım üyelerince belirlenir ve Sprint boyunca sürekli olarak tahmini bu zamanlar güncellenerek Sprint kalan zaman grafikleri (burndown chart) oluşturulur. Böylece Sprint süresince ürün sahibi ve scrum yöneticisi Sprint'in genel gidişi hakkında bilgi sahibi olur, aynı zamanda takım elemanları da kalan iş sürelerini ve harcadıkları zamanı takip edebilirler.

Scrum'un belki de verimliliği artıran en önemli kavramlarından biri de günlük Sprint toplantılarıdır. Bu toplantılar her gün belirli saatlerde farklı bir takım üyesinin liderliğinde ayak üstü yapılır ve en fazla 15 dakika sürer. Bu toplantılarda her takım üyesi şu 3 soruya cevap verir;

  • Dün ne yaptım?
  • Bugün ne yapacağım?
  • Önümde olan engeller ve karşılaştığım sorunlar neler?

bu toplatılara herkesin zamanında ve davet edilmeden katılması ve uzun sürmemesi çok önemlidir. Bu toplatılar sayesinde takım üyelerinin her biri diğer üyelerin nelerle uğraştığını öğrenme fırsatını edinirler ve çalışacakları işleri diğerleriyle paylaştıkları için işlerine daha iyi konsantre olabilirler.

Her Sprint'in bitiminde ortaya konulan ürün hakkında geri besleme alabilmek için yazılımla alakalı her türlü kişiye (Ürün sahibi, pazarlama, diğer takımlar vs.) açık Sprint gözden geçirme toplantısı yapılır. Bu toplantının amacı yazılımın ürün sahibinin gereksinimlerine uygun olarak geliştirildiğinden emin olmaktır. Bu sayede müşterinin gereksinimleri bir şekilde yanlış anlaşılmış ise bu farkedilir ve bir sonraki Sprint'de bu hataların önüne geçilir.

Bu adımlar ürün sahibinin ürün gereksinim dökümanına yazdığı, zaman içinde geliştirip, değiştirdiği gereksinimler bitene kadar tekrarlanır.

Umarım burada anlattıklarım Agile ve Scrum hakkında bir fikir sahibi olmanızı sağlamıştır. Özellikle Scrum'un projelerinizdeki başarı oranlarını ve kişisel olarak verimliliğinizi arttıracağına inanıyorum. Scrum ve Agile ilgili deneyimlerinizi ve sorularınızı paylaşabilirseniz sevinirim.

Scrum ile ilgili daha detaylı bilgilere aşağıdaki linklerden ulaşabilirsiniz.

Kaynaklar:
http://agilemanifesto.org/
http://www.pragprog.com/titles/pad/practices-of-an-agile-developer
http://en.wikipedia.org/wiki/Agile_software_development
http://www.ibm.com/developerworks/rational/library/08/0701_ellingsworth/
http://scrum-master.com/en/default.aspx
http://www.scrumalliance.org/
+
+
+ + + + + + +
+
+ +
+
+
-
-
-
-

Ülkemden Şahit Manzaraları - I

-
-
-
-Dikkat: Gerçek Bir Olaydır!


40 yaşlarında bir adam, 1 yaşını henüz doldurmuş çocuğu için dışarı süt almaya çıkmıştır. Mahallede bir bağrışma duyar, yaklaşır. Bir kavga gürültü vardır, olay biterken jandarma sorar: "şahit misin?". "Evet" cevabını veren adam o akşam evine dönemez. O akşam nezarethanede kalır, ertesi gün cezaevine gönderilir. Anlamamıştır, şahit olmaya gelmişti sadece. 45 gün sonra duruşma var derler, 45 gün cezaevinde kalmak zorundadır. 45 gün sonra da heyecan içinde çıkacağını düşünmektedir, ne de olsa sadece şahit olmaya gelmişti. Ve mahkeme günü gelip çatmıştır, çıkıp çocuklarını görecektir artık. Zaten, cezaevindeki görüşlerde de karısına, "çocuklara dikkat et" deyip durmuştu, özlemişti anlaşılan. Ama, o gün hakim mahkemeyi 1 ay erteler. Özlemle sarılma umutları bir anda sönmüştür Sebepsiz yere 1 ay daha 4 duvar arasında yaşamak zorunda kalacaktır.
-
-
- - -
-
- -
-
-
+
+ + +
+
+
+

+ +Mercurial +

+
+
+
+PHPMagazine'de, CVS, SVN v.b kaynak kod yönetim araçları yerine, daha gelişmiş ve basit olan Mercurial'in kullanımına teşvik etmek için bir yazı hazırlanmış. Okunabilir de, okunduktan sonra uygulanabilir de.
+
+
+ + + + + + +
+
+ +
+
+
-
- - -
-
-
-

Bazaar sürüm kontrol sistemi

-
-
-
-Daha önce sadece Java-Gnome projesine yama (Bazaar terminolojisiyle bundle) göndermek için kullandığım Bazaar‘ı bu haftasonu deneme fırsatım oldu. Uzaktaki bir arkadaşım ile basit bir proje üzerinde çalışacaktık. Ne kadar basit olsa bile klasik yöntemlerle çalışsak aramızda ya email ile sürekli kod gidip gelecek ya da en iyi ihtimalle FTP sunucusu üzerine yazarak kodlarımızı paylaşacaktık. CVS, [...]
-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

A brave new world

-
-
-
-

End of an era marks the beginning of another one. With enormous sculpted success standing right behind me, I've recently quit Cellenity to explore what else the future has to offer.

-

On the way back home I stumbled upon the tail of this guy:

-

-

I spent the time and fuel that I'd normally be wasting around rush-hours Istanbul traffic on shows like Cebit Eurasia and Autoshow. Quick sum: Cebit is incrementally better every year, but Autoshow was spectacular. I've had the privilege to peek inside the Megane Coupe Concept, I shook hands with a member of the team who designed Sakarya University's 100% solar-cell racing car. Although fun, the rest was usual: short skirts, leg ladies, inefficient internal combustion engines, ugly car designs, little-to-no steps forward in evolution of transportation. Hybrids and electric vehicles receiving more attention was encouraging.

-

What comes next, I'll be blogging.


-
-
- - -
-
- -
-
-
-

17 Ekim 2008

- -
- - -
-
-
-

JBoss Seam kitapları ....

-
-
-
-Bir önceki yazımda JBoss Seam'in klasik Java Enterprise Development (JEE)'a kazandırdığı çeviklikten, programlama modeline, metodolojisine getirdiği devrim niteliğindeki özelliklerinden bahsetmeye çalıştım. Yeni bir teknoloji öğrenmenin en iyi yolunun o konu hakkında yazılmış kaliteli kitap(lar)ı okumak olduğunu düşünenlerdenim. Bu yazımda da Seam hakkında yazılmış kitapları ve bu kitaplar hakkındaki düşüncelerimi paylaşmaya çalışacağım.


"Seam in Action" Seam'i en kapsamlı şekilde anlatan, okunması rahat ve bol örnekleri olan bir kitap. Manning yayınevinin diğer kitapları gibi bu kitap da oldukça kaliteli ve çok iyi edit edilmiş. Bu kitabı Early Access seviyesinden beri takip ediyorum ve her sayfasından yeni bir şeyler öğrendim diyebilirim. Ayrıca referans kitabı olarak kullanılabilecek şekilde kapsamlı olduğu için başucu kitabı niteliğinde. Fakat kitap Seam'e ilk başlayanlar için biraz ağır gelebilir onun için biraz deneyim kazanıldıktan sonra okunmalı. (5/5)





Apress yayınevinden çıkan "Beginning JBoss Seam" özellikle yeni başlayanlar için çok yararlı diyebilirim. Özellikle Seam'in getirdiği yeniliklerden Bijection ve Web Conversation kavramının temellerini başarılı ve kolay anlaşılır bir şekilde anlatıyor.
(4/5)








Seam'in 1.x versiyonu sürecindeki geliştiricilerinden Michael Juntao Yuan'ın yazarlığını yaptığı "JBoss Seam: Simplicity and Power Beyond Java" bu kitap yine Seam'e yeni başlayanlar için güzel bir kaynak. Şu anda satışta olan versiyon Seam 1.x sürümünü kapsıyor fakat yakın zamanda Seam 2.x'i kapsayan yeni sürümü yayınlanacak.
(4/5)






Apress yayınevinden çıkan diğer bir kitap "Practical JBoss Seam Projects". Henüz bu kitabı okumaya zamanım olmadı fakat okuma listemde üst sıralarda. Okuyan arkadaşlar fikirlerini paylaşabilirlerse çok sevinirim.
(?/5)







Seam'in ve Hibernate'in yaratıcısı olan Gavin King'in yazarlığını yaptığı "Java Persistence with Hibernate"'in son ünitesi Seam'e ayrılmış. Seam'in ortaya çıkış sürecini ve temel özelliklerini yaratıcısının kaleminden okumak isteyenler mutlaka göz atmalılar.
(5/5)


-
-
- - -
-
- -
-
-
-

16 Ekim 2008

- -
- - -
-
-
-

Geri Sayım Başladı

-
-
-
-


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

Bardağın yarısı boş mu yoksu dolu mu?

-
-
-
-

Bur meşhur sorunun bir çok cevabı var. Msn iletisinde şunları yazmıştı geçen bir arkadaşım:
-
-To the optimist, the glass is half full.
-To the pessimist, the glass is half empty.
-To the engineer, the glass is twice as big as it needs to be.
-

-Benim çok hoşuma gitmişti. Aklıma takılmış olacak ki web’de oradan oraya zıplarken bir yerde şu harika cümleyi gördüm:
-
-The physicists say the glass is neither. It is completely full, half with water, the other half with air.

-

Ardından bugün okulda arkadaşımı gördüm ve bunu söylemiştim. Sonra başardık konuşmaya, başkaları ne derdi acaba diye düşünüyorken kendi aramızda, ben de o arada atladım ve “Filizof ne derdi ? ” diye sordum Biraz sessizlik oldu, düşünürken şunu deyiverdim:

-

Hangi bardak ?

-

Bu da böyle bir anımdı bugün. Bu bardağın yarısı boş mu dolu mu sorusu bu arada bilimsel olarak kullanılan bir metotmuş. Adı da Litmust Testi. Psikoloji’de bir insanın en basitinden iyimser mi kötümser mi düşündüğünü belirtmek için yarıyormuş. Bu yöntem ile çok farklı düşünen insanları da görmek mümkün oluyor , örneğin yukarıdaki mühendis örneği gibi.

-

Bu testi farklı amaçlarla da kullanabiliyoruz, örneğin bir bardaki barmen-müşteri ilişikisi. Barmen bardağı her zaman tam dolu, yarı dolu, çeyrek dolu,… şeklinde görüyor etrafı, fakat bardaki müşteriler için tam tersi, onlar tam boş, yarım boş, çeyrek boş,… şeklinde görüyorlar etraftaki bardakları.

-

-
-

Copyleft - Fatih Arslan - Arslanlar Şehri, 2008. | - Permalink | - Yorum(0)


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

Akademik Bilişim 2009

-
-
-
-XI. Akademik Bilişim Konferansı bu yıl Şanlıurfa'da Harran Üniversitesinde yapılacak. Yakında Akgül Hocanın aktif katılım çağrısını alırsınız ama ben şimdiden haber vereyim dedim.

Her yıl olduğu gibi bu yıl da Konferans düzenlenmeden önce ev sahibi üniversitede bir toplantı yapılacak; 31 Ekimde Harran'da olacağız. Nereye gideceğiniz konusunda fikriniz olsun diye fotoğraflar eklerim ;)
-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

Eylül Ayı Üye Bülteni Yayınlandı

-
-
-
-

Linux Kullanıcıları Derneği’nin yapmış olduğu çalışmaların konsantre bir şekilde anlatıldığı aylık bülteni bu kez Eylül ayı için dernek üyelerimizden Seyfi Genç hazırladı. Bülten tüm üyelerimizin e-posta adreslerine gönderildi.

-

Gönderim sırasında Temmuz ayında olduğu gibi ufak çaplı bir kaza da yaşadık, e-postalara Reply-To yerine yanlışlıkla BCC (gizli karbon kopya) satırı eklenmesi nedeniyle yönetim kurulu listesinin moderatörleri Alper ve Doruk’un posta kutularına bir anda 1000′e yakın e-posta doldu… Neyse en azından bu sefer liste arşivleri kurtuldu :) (züğürt tesellisi)


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

Google Chrome, Özgür Yazılım ve Amerikan Ticaret Kanunları

-
-
-
-

webrazzi‘den okuduğum habere göre Google Chrome uygulamasını Suriye, İran ve Amerikan Ticaret Kanunu’na göre ambargolu bir çok ülkeden indirilmesine kapatmış. Gene aynı haber içerisinde Google’ın Adsense için her hangi bir yaptırım uygulamadığı söyleniyor. Yazıda ticari bir hizmetin kapatılmayıp, ücretsiz bir yazılımın kapatılması üzerinde duruluyor…

-

Bense başka bir noktaya takıldım. Özgür yazılım lisanslarının Ticaret Kanunları çerçevesinde nasıl değerlendirileceği.

-

Sonuç ürün üzerinde Amerikan Ticaret kanunları çerçevesinde bir ambargo söz konusu olabilir, sonuçta Google bir pazar olarak Amerika ve kanunlarla uğraşmak yerine zaten bir pazar olarak görmediği ülkeler için ambargoyu uygular. Kaynak kodlara ulaşılması, derlenmesi ve ilgili kanunların geçerli olmadığı başka ülkeler üzerinden tekrar yayınlanması ise engellenemez. Tam bu noktada düşündüğüm ise çeşitli kanunlarla özgür yazılım ürünü kaynak kodlarımızında yasaklanması söz konusu olabilir mi? Son durumunu bilmiyorum ama bir dönem Amerikan kanunları nedeniyle şifreleme algoritmaları açısından bir dolu sorun yaşanıyordu…

-

Bir de aklıma takılan acaba Amerika tarafından ambargolu ülkeler acaba bir fork yaparlar mı? :)

-

Aslında, dünyanın bu kadar küçüldüğü, sınırların bu kadar belirsizleştiği bir ortamda bir şeylerin kanunlarla sınırlandırılmaya çalışılması konusunda sorulacak o kadar fazla soru ve tartışılacak konu var ki…


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

QTicari Beta-1

-
-
-
+
+ + +
+
+
+

+ +QTicari Beta-1 +

+
+
+

QTicari, modüler otomasyon sisteminin beta-1 sürümü kullanıma hazır. Bu sürüm ile birlikte projenin lisansı da, GPLv3 olarak değiştirilmiştir. (Alpha-1 GPLv2 idi)

Projeye destek olmak için : 

@@ -382,121 +229,936 @@ Projeye destek olmak için : 

Forumlar için :
http://forums.nesimia.com/index.php?5 adresine tıklayın.

-


-
-
- - -
-
- -
-
-
+


+
+
+ + + + + + +
+
+ +
+
+
-
- +
+ + +
+
+
+

+ +Pardus'a katkı yapmak +

+
+
+
+
Pardus, 2007 sürümüyle beraber geniş kitlelere ulaşmayı başarabildi, ben 2008 sürümünün, 2007'den 2007.3'e kadar olan yükselen kalite ivmesini devam ettiremediğini düşünüyorum ama bu kullanıcı kitlesinin genişlemesini etkilemedi. Bunda mevcut kullanıcıların Pardus ile bir gönül bağı kurmuş olduğunu ve yeni kullanıcılar açısından da Ulusal Dağıtım fikrinin çekiciliğinin önemli rol oynadığını düşünüyorum. Bu kadar hızlı büyüyen bir toplulukta da projeye katkı yapmak isteyen her seviyeden kullanıcı olması beklenen bir durumdur.

Kullanıcıların az bir kısmının Linux konusunda tecrübeli ve yetkin kişilerden oluştuğu büyük çoğunluğunda AWB (Ağır Windows Bağımlılığı) olan kullanıcılar olduğu forum ve e-posta listelerinden anlaşılıyor. Bu çoğunluğun belgelendirme, çeviri ve hata raporlama konusunda planlı bir şekilde bilinçlendirilmesi gerektiğini düşünüyorum. AWB'den dolayı bu durumdaki kullanıcıların pek çoğu Linux dağıtımlarını birilerinin bir yerlerde kendi halinde kodladığı kendisinin de sadece inidirp kurup kullanacağı bir sistem olarak görüyor. Katkı konusunu da program yazmak olarak anlıyor. Bu konuda wiki sayfalarında belgeler var isteyen gider okur denilebilir ancak ben wiki sayfalarını sadece ne aradığını ve nerede bulacağını bilen kişilerin okuduğunu düşünüyorum. Bu durumda Pardus ekibince kullanıcılara tek adres olarak gösterilen özgürlükiçin sitesinin "Katkı" konusunda yol gösterici, bilinçlendirici ve özendirici yeni bölümleri ve projeleri olması gerektiğini düşünüyorum. Özgürlükiçin bugüne kadar hep içeriden dışarıya bir bilgi akışını sağlama yönünde gelişti, en son "Beyin" projesiyle dışarıdan içeriye akışı sağlayan bir gelişme sağlandı. Artık bundan sonraki adımların özelde "Katkı" konusunda ve genelde dışarıdan içeriye yönelik olması gerekiyor.

Bunları yazmama neden olan şey aslında ileri seviye bir kullanıcının aşağıdaki adreste gördüğüm pisi paketleri [1] , bu arkadaş Pardus'u kullanmış, kullanmakla kalmamış katkı da yapmış. Ama bu paketleri Pardus deposu yerine kişisel sayfasında yayınlamış. Acaba neden Pardus deposuna girmemiş, katkı için başvurmamış mı? başvurmak istemiş bilgi mi bulamamış? geri mi çevrilmiş? diğer dağıtımlar için yaptığı paketlere bakınca Pardus için de iyi bir katkıcı olabileceğini ama neden Pardus'un bu kişiyi kazanamadığını merak ettim. Daha korkunç bir soru acaba bu kişi gibi kendi halinde paketleme yapan kaç kişi var?

Pardus'un bir contrib deposu var ancak bu depoya herkes paket gönderemiyor, bu konudaki teknik konuları bilmiyorum ama contrib deposunun en az temel depo kadar formalite taşıdığını ve test süecine tabi olduğunu sanıyorum. Ben resmi depolarda olmayan paketlerin bulunduğu (belki kullanıcıların kendi yaptığı programlar için) kullanımı tamamen kullanıcıların sorumluluğunda olacak testleri ve bakımı kullanıcılar tarafından yapılacak ama Pardus sunucularından hizmet verecek daha özgür bir depo hayali kuruyorum.

Bu konuda zaten www.pardus-linux.org sitesi açtığı depo ile önemli bir adım atmıştı, ben bu depoların ve sitelerin ülkemizde ve Dünya'da daha da çoğalmasının Pardus'a her zaman fayda sağlayacağını düşünüyorum. Ama bu konularda öncülüğü Pardus ekibinin yapmasını da bekliyorum.

Belki yazılacak daha çok şey vardır ama aklıma gelenleri hızlıca yazdım.

[1] http://www.maccusfoto.nl/maxmenu/rpms.html

+
+
+ + + + + + +
+
+ +
+
+
-
-
-
-

Yine güzel bir blog

-
-
-
-

Bugünlerde sosyal ağlarda bir şeyler ararken (evet aranabiliyor) tematik blogu olanlar daha da çok dikkatimi çekiyor. Bu sefer de çok güzel bir pazarlama blogu dikkatimi çekti.


-
-
- - -
-
- -
-
-
-

15 Ekim 2008

+
+ + +
+
+
+

+ +The death of the dollar? +

+
+
+
+

From BBC Business, on his corner Prof. Ngaire Woods provides a good easy-read overview of the global economic status-quo and speculates on potential consequences of redistribution of economic power following the turmoil. Definitely worth reading. I don't have much to say, because I agree wholeheartedly.


+
+
+ + + + + + +
+
+ +
+
+
-
- +
+ + +
+
+
+

+ +Türkçe yerel ile hatalı çalışan programlar +

+
+
+
+Java’da daha önce pek çok kez karşılaştığım bir hatayı Python ile yazılmış olan Bazaar’da da yaşayınca buraya yazmak istedim. Java ve muhtemelen Python da büyük küçük harf çevrimlerinde aktif yerelin özelliklerini dikkate alıyor. Ancak bunun gerekmediği hatta istenmediği durumlar olabiliyor. Bunlara örnek olarak kod üreticiler verilebilir. Türkçe’deki I->ı ve i->İ çevrimi nedeniyle bazı programlar hatalı [...]
+
+
+ + + + + + + + + +
+
+ +
+
+
-
-
-
-

Fazıl Hüsnü Dağlarca

-
-
-
-
Türk şiirinin büyük ismi Fazıl Hüsnü Dağlarca 94 yaşında zatürre tedavisi gördüğü hastanede yaşamını yitirdi.



-
-
- - -
-
- -
-
-
+
+ + +
+
+
+

+ +Mac OS X'de GCC kurulumu +

+
+
+
+

2000-2001 dönemlerinde Apple'ın kendisi de derleyici olarak GCC kullanmaya başladığı için Mac OS X'de GCC kurmak oldukça kolay bir şey. Yapmanı gereken ilk şey Apple Developer Connection sitesine üye olmak. Burada geleneksel bir form dolduruyorsunuz. Apple'ın merak ettiği önemli bir şey herhangi bir üniversitede öğrenci durumunuz olup olmadığı. Arkasından geliştirici olarak ne yaptığınızı soran çok basit ve çok hoşuma giden bir anket hazırlamışlar. Programlama dili ve benzeri detaylara hiç girmemişler. Kimin için, hangi tür yazılımları hangi işletim sistemlerinde yazdığınızı öğrenmek onlara yetiyor.

+

Bir kez Apple Developer Connection (ADC) üyesi olunca, çok çeşitli araçları indirebiliyorsunuz. Bunlar arasında Mac OS X çekirdeği için hata ayıklayıcı gibi şeylerden türlü türlü SDK'lara kadar çok farklı paketler var. Elbette benim esas ilgimi çeken XCode aracı. Yalnız dikkat edilecek bir şey var. Bu araç ekleri vs ile yaklaşık 1.2 GB boyutundaki bir paket ile geliyor. Yani tek başına GCC kurmak isteseniz dahi, önce bütün araç paketini çekmeniz sonra da kurulum sırasında sadece GCC'yi çekmeniz gerekiyor.

+

Uzun bir indirme ve bir kaç tıklama sonrasında XCode'u kurunca /usr/bin/gcc adresinde GCC kurulmuş oluyor.


+
+
+ + + + + + +
+
+ +
+
+
+

22 Ekim 2008

-
- +
+ + +
+
+
+

+ +Makine Mühendisleri Odası İstanbul Şubesi'nde Özgür Yazılım sohbeti +

+
+
+
+

Haberler her yerde, yeni LKD Seminer Çalışma Grubu ekibi azmetmiş, kendilerine teşekkür ediyorum.

+

Bugün, 22 Ekim saat 19:00'da Makine Mühendisleri Odası İstanbul Şubesi'nde Özgür Yazılım konusunda biraz sohbet edeceğiz. Katılım herkese açık, adres ve kayıt için gerekli bilgiler MMOIstanbul.org'da.


+
+
+ + + + + + +
+
+ +
+
+
-
-
-
-

Aküyle çalışan atsız fayton

-
-
-
-

Memleketim insanı yapar tabii.

+
+ + +
+
+
+

+ +Subversion, Bazaar ve GIT Üzerine.. +

+
+
+
+rocketraptiye'yi Bazaar üzerinde sunduğumu daha önceki yazılarımdan birinde söylemiştim. Işık Üniversitesi Kulüpler Sunucusu'nda, Parkyeri'nde, Arch Linux Türkiye projelerinde ve kendi yaptığım işlerin bir kısmında Subversion tercih ediliyor. Bunun dışında bir çok sürüm yönetimi sistemi var elbet ve bunlardan en önemlilerini (GIT, Mercurial) araştırdıktan sonra Bazaar kullanmaya karar verdim. Bu yazıda bu konuyla ilgili dikkatimi çeken ve önemli bulduğum şeyleri paylaşmaya çalışacağım. Bir çok insanın sürüm yönetimine kavram olarak yabancı olduklarını düşündüğümden çok kısa bir şekilde onu da açıklamak istiyorum.
+

+
Sürüm Yönetimi Sistemleri Nedir?
+

+
İngilizce'de Version Control System (VCS) olarak geçen, dilimizde iyi anlatabilmek için yukarıdaki gibi uzun olan sürüm yönetimi, bazı yerlerde revizyon yönetimi gibi de kullanılıyor. Sürüm Yönetimi'ni, yazılımın aşama aşama geliştirildiğini düşünürsek, bu aşamaları kayıt altında tutan, istenildiğinde geri dönülmesine olanak tanıyan, aşamalar arasında neler olduğunu kolaylıkla gösterebilen yazılımlar olarak özetleyebiliriz. Geliştirici'nin hayatını kolaylaştırdığı kesin! Bu yazılımlardan neler beklendiğini maddeler halinde yazarsam sanırım daha iyi anlaşılacaktır:
+
    +
  • Kodda yapılan tüm değişimler birer revizyondur.
  • +
  • Revizyonlar arasında değişen dosyalar, dosyalardaki değişiklikler (gerekirse yama olarak) kolayca görüntülenebilmelidir.
  • +
  • Herhangi bir revizyondan sonra işler yanlış gittiyse, o revizyona kadar olan kısım geri alınıp hiç bir şey olmamış gibi devam edilebilir.
  • +
  • Herhangi bir dosyada yapılan değişiklikler kodun geri kalanından bağımsız olarak geri alınabilmelidir.
  • +
  • Birlikte çalışılan projelerde, diğerlerinin yaptığı değişiklikleri alabiliyor olmalı ve bunu yaparken de olabildiğince az (mümkünse sıfır) çakışmaya izin vermelidir.
  • +
  • Ek maliyetler getirmemeli, hızlı ve kolay olmalıdır. Mümkünse her platformda çalışmalıdır.
  • +
+
Tüm bunlar bir arada düşünüldüğünde geliştiricinin işlerini kolaylaştıran ve hızlandıran etmenler.. Bu ihtiyaçlara cevap verebilmek adına kullanılabilir durumda bir sürü sürüm yönetimi yapan yazılım var. En meşhuru olan CVS'in, doğal gelişim süreci içinde yetersiz gelmeye başladığı ortaya çıkınca ortaya Subversion çıkmış. Şu anda bir çok ihtiyacı görüyor gibi görünse de ileride yetersiz kalacağını görenler Bazaar, GIT ve Mercurial gibi alternatifler geliştirmişler. Gelin; bu sistemlerin yukarıdaki maddelere ek olarak getirdiklerine bakalım:
+
    +
  • Sürüm yönetimi için çevrimiçi olmak gerekmemeli! Teslimat (commit), Birleştirme (merge), tarihçe gibi işlemler için herhangi bir sunucuya bağlanmak gerekmemeli.. Kısaca merkezi sisteme hayır!
  • +
  • Kod tabanı dağıtık bir yapıda olabilir ve insanlar birbirlerinden değişik kısımları ya da kodun tamamını alabilirler.
  • +
  • Her kopya, sürüm kontrolüne ait tarihçe vb. kritik önem taşıyan bileşenleri barındırır.
  • +
  • Her kopya aslında yeni bir daldır (branch)!
  • +
  • Birleştirme işlemi acı vermeyen, sürekli yaptığımız; hatta zevk veren bir işlem olmalıdır!
  • +
  • Çevrimdışı çalışma = hız!
  • +
  • Büyük şirketlerde sıkça rastlanan "kod çalışana ve tüm testleri geçene kadar teslim edemezsin!" mantığı yüzünden tüm değişikliklerin tek ve kocaman bir yama olarak gönderilmesi sorunlara yol açabiliyor. Bunun yerine yerel ve küçük küçük teslimatlar yapabilir; daha sonra değişiklikler ana sunucuya teslim edilebilir hale geldiğinde her değişiklik birer revizyon olacak şekilde ana sunucuda yerini alır. Böylece yapılan büyük bir değişiklikte bile atomik değişiklikler geri alınabilir ve rahatlıkla düzeltilebilir.
  • +
+
Peki Alternatifler Neler?
+

+
Bunları ve daha fazlasını yapabilen uygulamaların bulunduğu kümeye Dağıtık Sürüm Yönetimi Sistemleri (Distributed Version Control Systems) deniyor. Linus Torvalds, Linux çekirdeğinin geliştirilmesinde kullanılan BitKeeper ile ilgili sorunlar yaşanmaya başlanınca bu konuya kendi çözümünü getirip GIT adında bir yazılım yazmış. Dağıtık Sürüm Yönetimi ve GIT hakkındaki düşüncelerini paylaştığı şu video'nun epey yararlı olduğunu söyleyebilirim.
+

+
MercurialArch Linux Türkiye projelerini yönetmek için Samed BEYRİBEY'in önerisiyle denemeye başladık. Başlarda fazla araştırmadığım için oldukça yabancı gelmiş ve ısınamamıştım. Tıpkı GIT gibi "commit", "checkout" vb. alıştığımız anahtar sözcükler yerine başka sözcükler tercih ediliyordu ve bu da kafa karıştırıcı oluyordu. Mercurial, sırf bu yüzden dumur olan insanlara kolaylık olması amacıyla bu sözcükleri içinde bulunduruyor yine de.. Bir süre denedikten sonra bir hayli karışık geldiğinde kullanımından vazgeçtik ve böylece Mercurial defteri kapanmış oldu.
+

+
GIT, şu anda bir hayli revaçta olan bir yazılım.. Bir çok özgür yazılım projesi tarafından tercih ediliyor ve sayıları giderek artıyor. Benim GIT'i tercih etmememdeki en büyük sebepler şöyleydi:
+
    +
  • GIT içerisindeki kodu sunmak için bir sürü ayarla uğraşmak istemedim.
  • +
  • GIT'in getirdiği terminoloji öğrenmesi zaman alacak gibiydi.
  • +
  • Dökümantasyonu Bazaar kadar açık ve rahat okunabilir değil.
  • +
  • Herhangi bir web servisi ile alakası yok.. (Bazaar'ın LaunchPad desteği gibi..)
  • +
  • Boş dizinlerin sürüm yönetimi içinde bulunamaması ve içine boş birer dosya koyma zorunluluğu hoşuma gitmedi.
  • +
  • Platform bağımsız değil. Windows'da çalışmıyor. (ya da desteği henüz yetersiz)
  • +
+
Öte yandan araştırmamı daha çok Bazaar ve GIT karşılaştırması yapan yazılar üzerinde yoğunlaştırmıştım. Bazaar'ın hoşuma giden özellikleri şöyle:
+
    +
  • Kodunuzu sunmak için herhangi bir sunucu kurmanıza gerek yok. Zaten varolanlar ile birlikte zaten bir hayli seçeneğiniz var: +
      +
    • bzr://,
    • +
    • sftp:// (SSH),
    • +
    • ftp://, http:// (webdav),
    • +
    • file:// (yerel dosya sistemi)
    • +
    +
  • +
  • Dökümantasyonu (özellikle anlatımı) ve sitesi oldukça etkileyici..
  • +
  • LaunchPad desteği sayesinde tek bir komutla servisle etkileşim halindesiniz.
  • +
  • Boş dizinler de (doğal olarak) sürüm yönetimine dahiller.
  • +
  • Linux, Mac OS X ve Windows'da sorunsuz olarak çalışabiliyor.
  • +
+
Bazaar'la ilgili beni en çok etkileyen şey kodumu sunmak için çok fazla uğraşmama gerek olmamasıydı. Varolan kodumu sürüm yönetimi altındayken kullandığım ağ sunucusu ile sunmam yeterli! Örneğin raptiye'nin kod tabanını nginx ile sunuyorum (http://code.raptiye.org) ve Bazaar kullanan bir kişi http:// protokolü üzerinden kodu dallandırabiliyor!
+

+
Bir çok kişi Subversion kullanımına; dolayısıyla da merkezi sisteme alışık olduğundan Bazaar'ı bu şekilde yapılandırıp yarı-dağıtık bir model ile kullanabilirsiniz. Uzaktaki kodu yerelinize indirip (dallandırıp) tüm değişikliklerinizi çevrimdışı olarak kendi bilgisayarınızda yapabilir, dilediğinizce farklara bakıp, tarihçeyle ilgili işlem yapabilir, yerel teslimatlar yapabilirsiniz. İşiniz bittiğindeyse kodun son halini sunucuya gönderebilirsiniz. raptiye'de tek kişi çalıştığım için şu anda bu modeli sıkça uyguluyorum. Biraz da kullanımdan örnek verirsem daha iyi olacak sanırım..
+

+
Öncelikle kodu kendi yerelimde dallandırıyorum:
+
+

+
bzr branch http://code.raptiye.org/raptiye/main/ raptiye
+

+
Daha sonra bir takım değişiklikler yapıp yaptıklarımı gözden geçirmek için şu komutu veriyorum:
+

+
+
bzr diff|vi -
+

+
bzr diff komutu yaptıklarımın son revizyon ile farkını gösterirken "|vi -" komutu ise çıktıyı VI adlı editöre yönlendirir. Bu şekilde yaptıklarımı renkli ve daha okunabilir olarak izleyebiliyorum.
+

+
Yaptıklarımdan memnun kaldım ve teslim etmek istiyorum:
+

+
+
bzr ci
+

+
ci komutu commit komutunun kısaltması bu arada.. Bu komut sayesinde orjinal kodun kendi yerelimdeki dalında ilk teslimatımı yapmış oldum. Bu değişiklikleri ana sunucuya atmak istersem:
+

+
+
bzr push
+

+
komutunu kullanmalıyım. Bu komutu ilk kez kullanıyorsanız kodun yükleneceği yeri de belirtmelisiniz:
+
+

+
bzr push sftp://user@domain.com/home/code/raptiye/main/
+

+
Bu noktada önemli bir konuya değinmekte de fayda var. Performans kaynaklı sebeplerden dolayı bzr push komutu uzaktaki sunucunun yalnızca tarihçesini günceller ancak kod üzerinde gerekli olan değişiklikleri yapmaz. Bu değişiklikleri yapmak için sunucu üzerindeki kod tabanında bzr up komutunu çağırmalı ya da bunu sizin için yapan bir eklentiyi indirip yerelinize kurmalısınız.
+

+
Proje üzerinde birden fazla kişi çalıştığında sunucu üzerinde her geliştirici için bir hesap açmak istemeyebilirsiniz. Bu durumda ağ sunucusunda http protokolü üzerinden belli kişilere erişim izinleri tanımlayarak teslimat yaptırabilirsiniz. nginx üzerinde webdav yerine wsgi ayağı kullanılıyor ancak wsgi, nginx'in geliştirilme hızına yetişemediğinden ben çalıştırmayı beceremedim. (nginx'i, wsgi desteğiyle derlemekten bahsediyorum -- wsgi tarafında yamalar var ama onlar bile eski..)
+

+
Bundan sonraki projelerde Bazaar benim sürüm yönetimi için tercih etmeye devam ettiğim yazılım olacak. Eminim benimkini kolaylaştırdığı gibi sizlerin de hayatını kolaylaştıracaktır.
+ +

+
+
+ + + + + + +
+
+ +
+
+
+

21 Ekim 2008

-


-
-
- - -
-
- -
-
-
+
+ + +
+
+
+

+ +Test Takımı Sizi Çağırıyor! +

+
+
+
+

PardusÖzgür yazılım süreçlerinde kullanıcıların katkı verebileceği birçok alan bulunmakta. Bu alanlar doğrudan kod yazmak ya da bileşen geliştirmek olabileceği gibi kod yazmayı bilmeyenlerin de katılabileceği pek çok işi de içeriyor. Çeviri, grafik desteği, hata bildirimi, belgelendirme çalışmalarının yanı sıra hem kendinizi geliştirebileceğiniz hem de Pardus'a katkı verebileceğiniz önemli bir alan daha var: Test süreçleri.

Test süreçlerinde görev almak için yüksek bir bilgi gereksinime gerek yok. Bununla birlikte test süreçleri, kullanılan yazılımları daha iyi öğrenmenizi, işlevlerinden haberdar olmanızı ve bu sayede bilginizin artmasına da yardımcı olur. Test süreçlerine katılmak, aynı zamanda özgür yazılım dünyasında geliştirme süreçlerinin nasıl işlediğini görebilmek ve ilerde bir Pardus geliştiricisi olmak için de iyi bir başlangıç noktası oluşturur.

Pardus Projesi'nde de tüm özgür yazılım projelerinde olduğu gibi test süreçleri son derece önemseniyor. Özgür yazılım bileşenleri her ne kadar çok sayıda geliştirici tarafından incelense de hatalar içermesi ya da bazı donanımlarla uyumlu çalışmaması olasılığı kaçınılmazdır. Pardus Geliştiricisi Serbülent Ünsal'ın liderliğini yaptığı Pardus Test Takımı ise gerek sürüm öncesi gerekse sürüm sonrası testlerle bu hataların en aza indirilmesini ve Pardus kullanıcılarının daha iyi bir bilgisayar deneyimi yaşamasını amaçlıyor.

Pardus Test Takımı, test süreçlerini iki aşamada yürütüyor. Bunlardan ilki sürüm testleri. Yeni Pardus sürümleri çıkmadan önce test takımı ile paylaşılan Pardus Test ve Geliştirici Sürümleri, Test Takımı tarafından o sürüm için hazırlanan test kılavuzlarının yönlendirmesi ile test ediliyor Bu testlerin sonunda ortaya çıkacak muhtemel sorunlar Test Takımı üyeleri tarafından test e-posta listesine bildirilir ve bu bildirimler ışığında sorunların çözümü sağlanarak daha kararlı ve daha fazla donanımla uyumlu Pardus sürümlerinin kullanıcılara buluşması sağlanılır.

Test Takımı'nın işi sadece sürüm öncesi testleri ile sınırlı değildir. Test Takımı, sürümlerin çıkmasını takip eden süreçte yapılan güncellemeleri de test ediyor. Bu testler sayesinde Pardus kullanıcılarının kullandığı kararlı depolara güncellemeler girmeden önce testlerinin yapılması ve güncellemelerin bir soruna yol açması durumunda bu sorunların tespit edilmesi sağlanıyor. Güncellemeler önemlerine ve sistemin kararlılığına olan etkilerine göre gruplara ayrılmış olup, bazı paketlerin güncellemeleri çok detaylı bazı paketlerin güncellemeleri ise daha az detaylı olarak test edilmektedir.

Haberimizin başında da belirttiğimiz gibi, Test Takımı'na katılmak için yüksek bir bilgi birikimine ve donanım ihtiyacına gereksiniminiz yok. Bilgisayarınızda oluşturacağınız sanal makinelerle ya da test süreçlerine tahsis edeceğiniz bir bilgisayar ile test takımına katılmanız mümkün. Bunun için başlangı düzeyinde Pardus kullanmayı bilmeniz yeterli.

Biz de Özgürlükİçin olarak bundan sonra Test Takımı'na verdiğimiz desteği daha da artırarak, test sürecine mümkün olduğunca daha fazla katkıcımızın dâhil olmasını amaçlıyoruz. Eğer siz de Pardus'un oluşumuna katkı vermek istiyor ama nereden başlayacağınızı bilmiyorsanız, hemen bu adreste yer alan formu doldurun ve psts _at_ pardus.org.tr adresine yollayarak gün geçtikçe büyüyen ve Pardus için çok önemli bir süreci yürüten Test Takımı'na katılın. Özgürlükİçin Forumlarında da test süreçleri ile ilgili fikirlerinizi paylaşabilirsiniz.

Özgürlük için... Pardus'u Test edin!


+
+
+ + + + + + +
+
+ +
+
+
+

20 Ekim 2008

-
- +
+ + +
+
+
+

+ +Ekonomik Krize Çözüm : Özgür Yazılım +

+
+
+
+

Hepimizin malumu ekonomik kriz kapıda. Şirketler kemer sıkma politikalarına başladılar. Bir sürü blogda krizin olası etkileri ve bunlarla nasıl baş edilir yazısı yayınlanıyor.

+

TechCrunch iki haftadır web 2.0 şirketlerinin durumları ve aldıkları önlemler üzerine yazılar yayınlıyor. Aynı şekilde webrazzi‘de krizin genelde internet sektörü özelde ise Türkiye internet sektörü üzerine etkisini incelemiş…

+

Krizle baş etme konusunda en ilginç yaklaşımlardan birini startupların piri Paul Graham sunuyor :”If nuclear winter really is here, it may be safer to be a cockroach - Eğer nükleer kış geldiyse, en güvenlisi hamam böceği olmaktır”. Yeni bir iş başlatmak ( startup ) için en uygun zamanın kötü ekonomiler olduğunu söylediği makalesinde küçük ve masrafları az olan bir işletmenin kötü ekonomilerde hayatta kalma şansının diğerlerinden daha fazla olduğunu ifade ediyor.

+

Kısaca herkesin söylediği : Maliyetlerinizi ne kadar düşürürseniz nakit problemleri ile o kadar az uğraşırsınız, dolayısı ile kriz süresince yaşarsınız.

+

İşte tamda bu noktada özgür yazılım işletmelere büyük olanaklar sunmakta. Sahipli yazılımların binlerce dolara mal olduğu bir ortamda bilişim ihtiyaçlarını özgür yazılım çözümleri ile giderip, bir yandan maliyetleri düşürürken bir yanda da teknolojik olarak rakiplerin önüne geçilebilir.

+

Bu konuda özgür yazılım avantajlarını anlatan örneğin şu makaleye ya da şu blog‘a bakılabilir. Ayrıca özgür yazılım alternatifleri için bu sayfaya, Türkiye’de geliştirilen özgür yazılımlar için ise bu sayfaya bakılabilir.

+

Umarım bu krizi kazasız belasız atlatmanın ötesine geçip daha da güçlenerek çıkarız.


+
+
+ + + + + + +
+
+ +
+
+
-
-
-
-

OpenOffice 3.0 Çıktı

-
-
-
+
+ + +
+
+
+

+ +Internet, Radyo ve Diğer Şeyler +

+
+
+
+

Bir süredir, alışkın olduğum, daimi internet bağlantılarından uzak yaşamak durumunda kalıyorum. Müşteri ofislerinde, toplantılarda, şehir içinde ortalık da dolaşırken internet erişimi ciddi bir problem oluyor. Uzun bir zamandır neredeyse daimi internet erişimi olan biri olarak hemen tüm iletişim ihtiyacını internet ve e-posta ile gerçekleştirirken birden bire uzak kalınca bocaladım. Bir dolu şey aksamaya başladı.

+

Çözüm olarak mobil internet erişimlerini düşünmeye başladım. Karşıma çıkan bir kaç alternatif arasından Nokia E71‘i tercih ettim. Artık e-posta ve internet erişimi ( biraz pahalıya gelse de :( ) elimin altında.

+

Bu acil iletişim problemini çözünce başka bir sorun ile karşı karşıya kaldım. Taşınabilir bilgisayarımda hiç mp3 yok, çünkü last.fm dinliyordum. Diğer şeylerle birlikte internet kopunca last.fm’i de kaybettik :( Çözüm gene E71 oldu. Fakat last.fm’i hala çok arıyorum. Çalan parçadan hoşlanmazsanız bu şarkıyı geç diyemiyorsunuz, en fazla yapabileceğiniz radyo kanalını değiştirmek, ki bu halde bile çoğu zaman hoşlanmadığınız başka parçalara denk geliyorsunuz :)

+

Sözün kısası “İnternet Yaşamdır” diyorum…


+
+
+ + + + + + +
+
+ +
+
+
+

19 Ekim 2008

+ +
+ + +
+
+
+

+ +Samsung ML-1610 Mono Laser Printer +

+
+
+
+Babam acilen bir lazer yazıcıya ihtiyaç duyunca bugün aşırı değerli dolara rağmen Samsung ML-1610 Mono Laser Printer aldık. Hatta o kadar acilen lazımdı ki şehirdeki Bimeks ve iki Teknosa’da bu modelden kutusu açılmamış tek bir ürün bile kalmadığından benim hiç yapmayacağım bir şeyi yapıp teşhir ürününü aldık. Gerçi karlı da çıktık. Normalde kutuyla gelen %60 [...]
+
+
+ + + + + + + + + +
+
+ +
+
+
+ +
+ + +
+
+
+

+ +Ülkemden Şahit Manzaraları - I +

+
+
+
+Dikkat: Gerçek Bir Olaydır!


40 yaşlarında bir adam, 1 yaşını henüz doldurmuş çocuğu için dışarı süt almaya çıkmıştır. Mahallede bir bağrışma duyar, yaklaşır. Bir kavga gürültü vardır, olay biterken jandarma sorar: "şahit misin?". "Evet" cevabını veren adam o akşam evine dönemez. O akşam nezarethanede kalır, ertesi gün cezaevine gönderilir. Anlamamıştır, şahit olmaya gelmişti sadece. 45 gün sonra duruşma var derler, 45 gün cezaevinde kalmak zorundadır. 45 gün sonra da heyecan içinde çıkacağını düşünmektedir, ne de olsa sadece şahit olmaya gelmişti. Ve mahkeme günü gelip çatmıştır, çıkıp çocuklarını görecektir artık. Zaten, cezaevindeki görüşlerde de karısına, "çocuklara dikkat et" deyip durmuştu, özlemişti anlaşılan. Ama, o gün hakim mahkemeyi 1 ay erteler. Özlemle sarılma umutları bir anda sönmüştür Sebepsiz yere 1 ay daha 4 duvar arasında yaşamak zorunda kalacaktır.
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ + +
+
+
+

+ +A brave new world +

+
+
+
+

End of an era marks the beginning of another one. With enormous sculpted success standing right behind me, I've recently quit Cellenity to explore what else the future has to offer.

+

On the way back home I stumbled upon the tail of this guy:

+

+

I spent the time and fuel that I'd normally be wasting around rush-hours Istanbul traffic on shows like Cebit Eurasia and Autoshow. Quick sum: Cebit is incrementally better every year, but Autoshow was spectacular. I've had the privilege to peek inside the Megane Coupe Concept, I shook hands with a member of the team who designed Sakarya University's 100% solar-cell racing car. Although fun, the rest was usual: short skirts, leg ladies, inefficient internal combustion engines, ugly car designs, little-to-no steps forward in evolution of transportation. Hybrids and electric vehicles receiving more attention was encouraging.

+

What comes next, I'll be blogging.


+
+
+ + + + + + +
+
+ +
+
+
+

17 Ekim 2008

+ +
+ + +
+
+
+

+ +JBoss Seam kitapları .... +

+
+
+
+Bir önceki yazımda JBoss Seam'in klasik Java Enterprise Development (JEE)'a kazandırdığı çeviklikten, programlama modeline, metodolojisine getirdiği devrim niteliğindeki özelliklerinden bahsetmeye çalıştım. Yeni bir teknoloji öğrenmenin en iyi yolunun o konu hakkında yazılmış kaliteli kitap(lar)ı okumak olduğunu düşünenlerdenim. Bu yazımda da Seam hakkında yazılmış kitapları ve bu kitaplar hakkındaki düşüncelerimi paylaşmaya çalışacağım.


"Seam in Action" Seam'i en kapsamlı şekilde anlatan, okunması rahat ve bol örnekleri olan bir kitap. Manning yayınevinin diğer kitapları gibi bu kitap da oldukça kaliteli ve çok iyi edit edilmiş. Bu kitabı Early Access seviyesinden beri takip ediyorum ve her sayfasından yeni bir şeyler öğrendim diyebilirim. Ayrıca referans kitabı olarak kullanılabilecek şekilde kapsamlı olduğu için başucu kitabı niteliğinde. Fakat kitap Seam'e ilk başlayanlar için biraz ağır gelebilir onun için biraz deneyim kazanıldıktan sonra okunmalı. (5/5)





Apress yayınevinden çıkan "Beginning JBoss Seam" özellikle yeni başlayanlar için çok yararlı diyebilirim. Özellikle Seam'in getirdiği yeniliklerden Bijection ve Web Conversation kavramının temellerini başarılı ve kolay anlaşılır bir şekilde anlatıyor.
(4/5)








Seam'in 1.x versiyonu sürecindeki geliştiricilerinden Michael Juntao Yuan'ın yazarlığını yaptığı "JBoss Seam: Simplicity and Power Beyond Java" bu kitap yine Seam'e yeni başlayanlar için güzel bir kaynak. Şu anda satışta olan versiyon Seam 1.x sürümünü kapsıyor fakat yakın zamanda Seam 2.x'i kapsayan yeni sürümü yayınlanacak.
(4/5)






Apress yayınevinden çıkan diğer bir kitap "Practical JBoss Seam Projects". Henüz bu kitabı okumaya zamanım olmadı fakat okuma listemde üst sıralarda. Okuyan arkadaşlar fikirlerini paylaşabilirlerse çok sevinirim.
(?/5)







Seam'in ve Hibernate'in yaratıcısı olan Gavin King'in yazarlığını yaptığı "Java Persistence with Hibernate"'in son ünitesi Seam'e ayrılmış. Seam'in ortaya çıkış sürecini ve temel özelliklerini yaratıcısının kaleminden okumak isteyenler mutlaka göz atmalılar.
(5/5)


+
+
+ + + + + + +
+
+ +
+
+
+ +
+ + +
+
+
+

+ +Akademik Bilişim 2009 +

+
+
+
+XI. Akademik Bilişim Konferansı bu yıl Şanlıurfa'da Harran Üniversitesinde yapılacak. Yakında Akgül Hocanın aktif katılım çağrısını alırsınız ama ben şimdiden haber vereyim dedim.

Her yıl olduğu gibi bu yıl da Konferans düzenlenmeden önce ev sahibi üniversitede bir toplantı yapılacak; 31 Ekimde Harran'da olacağız. Nereye gideceğiniz konusunda fikriniz olsun diye fotoğraflar eklerim ;)
+
+
+ + + + + + +
+
+ +
+
+
+

16 Ekim 2008

+ +
+ + +
+ +
+
+ +
+ + +
+
+
+

+ +Bardağın yarısı boş mu yoksu dolu mu? +

+
+
+
+

Bur meşhur sorunun bir çok cevabı var. Msn iletisinde şunları yazmıştı geçen bir arkadaşım:
+
+To the optimist, the glass is half full.
+To the pessimist, the glass is half empty.
+To the engineer, the glass is twice as big as it needs to be.
+

+Benim çok hoşuma gitmişti. Aklıma takılmış olacak ki web’de oradan oraya zıplarken bir yerde şu harika cümleyi gördüm:
+
+The physicists say the glass is neither. It is completely full, half with water, the other half with air.

+

Ardından bugün okulda arkadaşımı gördüm ve bunu söylemiştim. Sonra başardık konuşmaya, başkaları ne derdi acaba diye düşünüyorken kendi aramızda, ben de o arada atladım ve “Filizof ne derdi ? ” diye sordum Biraz sessizlik oldu, düşünürken şunu deyiverdim:

+

Hangi bardak ?

+

Bu da böyle bir anımdı bugün. Bu bardağın yarısı boş mu dolu mu sorusu bu arada bilimsel olarak kullanılan bir metotmuş. Adı da Litmust Testi. Psikoloji’de bir insanın en basitinden iyimser mi kötümser mi düşündüğünü belirtmek için yarıyormuş. Bu yöntem ile çok farklı düşünen insanları da görmek mümkün oluyor , örneğin yukarıdaki mühendis örneği gibi.

+

Bu testi farklı amaçlarla da kullanabiliyoruz, örneğin bir bardaki barmen-müşteri ilişikisi. Barmen bardağı her zaman tam dolu, yarı dolu, çeyrek dolu,… şeklinde görüyor etrafı, fakat bardaki müşteriler için tam tersi, onlar tam boş, yarım boş, çeyrek boş,… şeklinde görüyorlar etraftaki bardakları.

+

+
+

Copyleft - Fatih Arslan - Arslanlar Şehri, 2008. | + Permalink | + Yorum(1)


+
+
+ + + + + + + + + +
+
+ +
+
+
+ +
+ + +
+
+
+

+ +Eylül Ayı Üye Bülteni Yayınlandı +

+
+
+
+

Linux Kullanıcıları Derneği’nin yapmış olduğu çalışmaların konsantre bir şekilde anlatıldığı aylık bülteni bu kez Eylül ayı için dernek üyelerimizden Seyfi Genç hazırladı. Bülten tüm üyelerimizin e-posta adreslerine gönderildi.

+

Gönderim sırasında Temmuz ayında olduğu gibi ufak çaplı bir kaza da yaşadık, e-postalara Reply-To yerine yanlışlıkla BCC (gizli karbon kopya) satırı eklenmesi nedeniyle yönetim kurulu listesinin moderatörleri Alper ve Doruk’un posta kutularına bir anda 1000′e yakın e-posta doldu… Neyse en azından bu sefer liste arşivleri kurtuldu :) (züğürt tesellisi)


+
+
+ + + + + + + + + +
+
+ +
+
+
+ +
+ + +
+
+
+

+ +Google Chrome, Özgür Yazılım ve Amerikan Ticaret Kanunları +

+
+
+
+

webrazzi‘den okuduğum habere göre Google Chrome uygulamasını Suriye, İran ve Amerikan Ticaret Kanunu’na göre ambargolu bir çok ülkeden indirilmesine kapatmış. Gene aynı haber içerisinde Google’ın Adsense için her hangi bir yaptırım uygulamadığı söyleniyor. Yazıda ticari bir hizmetin kapatılmayıp, ücretsiz bir yazılımın kapatılması üzerinde duruluyor…

+

Bense başka bir noktaya takıldım. Özgür yazılım lisanslarının Ticaret Kanunları çerçevesinde nasıl değerlendirileceği.

+

Sonuç ürün üzerinde Amerikan Ticaret kanunları çerçevesinde bir ambargo söz konusu olabilir, sonuçta Google bir pazar olarak Amerika ve kanunlarla uğraşmak yerine zaten bir pazar olarak görmediği ülkeler için ambargoyu uygular. Kaynak kodlara ulaşılması, derlenmesi ve ilgili kanunların geçerli olmadığı başka ülkeler üzerinden tekrar yayınlanması ise engellenemez. Tam bu noktada düşündüğüm ise çeşitli kanunlarla özgür yazılım ürünü kaynak kodlarımızında yasaklanması söz konusu olabilir mi? Son durumunu bilmiyorum ama bir dönem Amerikan kanunları nedeniyle şifreleme algoritmaları açısından bir dolu sorun yaşanıyordu…

+

Bir de aklıma takılan acaba Amerika tarafından ambargolu ülkeler acaba bir fork yaparlar mı? :)

+

Aslında, dünyanın bu kadar küçüldüğü, sınırların bu kadar belirsizleştiği bir ortamda bir şeylerin kanunlarla sınırlandırılmaya çalışılması konusunda sorulacak o kadar fazla soru ve tartışılacak konu var ki…


+
+
+ + + + + + +
+
+ +
+
+
+

15 Ekim 2008

+ +
+ + +
+
+
+

+ +Fazıl Hüsnü Dağlarca +

+
+
+
+
Türk şiirinin büyük ismi Fazıl Hüsnü Dağlarca 94 yaşında zatürre tedavisi gördüğü hastanede yaşamını yitirdi.



+
+
+ + + + + + +
+
+ +
+
+
+ +
+ + +
+
+
+

+ +OpenOffice 3.0 Çıktı +

+
+
+

OpenOffice 3.0 çıktı, yansımızda da yerini aldı.

İndirmek için:

Ayrıca OpenOffice Türkiye web sayfasında ek bilgiler bulabilirsiniz.

-

- yansı ekibi


-
-
- - -
-
- -
-
-
+

- yansı ekibi


+
+
+ + + + + + + + + +
+
+ +
+
+
+
-
- - -
-
-
-

Dünya Plone Günü’nde Plone Semineri

-
-
-
-

Önde gelen özgür içerik yönetim sistemlerinden Plone‘un yaygınlaştırılması için 7 Kasım “Dünya Plone Günü” ilan edildi ve o günde dünyanın dört bir yanında Plone’u tanıtma ve yaygınlaştırma amacıyla seminerler düzenleniyor.

-

Derneğimizin köklerini oluşturan, o zamanki adıyla Linux Kullanıcıları Grubu’nun aktif insanlarından H. Turgut Uyar bizimle bağlantı kurarak bu etkinliği haber verdi ve o gün bu konuda bir seminer verebileceğini söyledi. Çoğumuz onu 90′lı yıllardaki Türkiye’nin ilk GNU/Linux dağıtımı, Turkuaz Linux’tan hatırlıyoruz. Kendisi 2002 yılından bu yana da Plone kullanıyor. Plone ile site projeleri gerçekleştirdi (www.lkd.org.tr de dahil), Plone’u temel alan uygulamalar geliştirdi ve Plone’un Türkçe çevirisini yaptı. Aynı zamanda Plone Vakfı’nın üyesi.

-

Etkinlikten haberdar olan Internet Teknolojileri Derneği de etkinliğin tanıtımında katkıda bulunmak istediğini belirtti. Bilgi Üniversitesi ile bağlantı kurduğumuzda, seve seve böyle bir etkinliğe ev sahipliği yapacaklarını belirttiler.

-

Plone’la ve Plone’a ilgi duyan insanlarla tanışmak isteyen herkesi Dünya Plone Günü, 07 Kasım 2008′de, 14:00-15:00 arasında İstanbul Bilgi Üniversitesi Dolapdere Kampüsü’nün D132 numaralı salonuna bekliyoruz.


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

Bodoslama Bilişim Şirketi 4 - Finans Dediğin Elinin Kiri

-
-
-
-

Bu seferki öykü özellikle 2000 krizini yaşayanların bazılarına tanıdık gelecektir herhalde. Mevcut ekonomik durum için de öğretici olur diye düşünüyorum.

-

Genç girişimcimizin şirketi çok ciddi bir kaç kamu projesi aldıktan sonra kendisi şirketin büyütülmesi için yatırım yapılması gerektiğine karar verir. Henüz bu projeler teslim de edilmemiştir ama son derece iyi teklif metinleri yazıldığına göre, elbette o metinlerin de gerçekleşeceğine inanır ve çalışmaya başlar.

-

Bilindiği gibi bir yazılım şirketinin en önemli demirbaşlarından birisi en az 2, mümkünse 3 aracın otopark alanına zorlukla sığan bir makam arabası olmalıdır. Bu nedenle girişimcimiz bu demirbaş araçlardan en az 2 tane alır. Kendisi tek yöneticidir ama kapının önünde 2 araç gerçekten çok güzel gözükecektir.

-

Arkasından toplamda en fazla 10 sözleşme yöneten, yılda en fazla 10 tane proje için 10 tane fatura kesen, ve onlarca çalışan da olsa hepsi her ay aynı maaşları alan kişilerin bordrolarını dökmek için idari - mali işler bölümüne genç ve dinamik bir kadro kurmak gerekir. Bu bölüme önce 5, sonra bir 5 daha derken 10 kişi işe alınır. Bu 10 kişinin telefon açması uygun olmadığından bu arkadaşlara bir de ön büro kurulur.

-

Bu kadar kalabalık bir finans departmanı oluşunca, bankalardan kredi almak, teminat mektubu elde etmek gibi konularda önemli bir avantaj elde edilir. Artık kendisi 1-2 banka ile muhatap olacağına, ülkemizdeki hemen her banka ve hatta her bankada birden fazla şube ile muhatap olacak bir kadro olduğundan, her şubede hesaplar açılır. Her şubeye her ay güncel mizanlar yollanarak ne kadar büyük ve güçlü bir şirket olunduğu gösterilir. Her bir seferinde en az 10 bankadan kredi teklifi istenir. Hatta teklifler gerekmese de istenir. Bazen bir bankanın mevduata verdiği faiz öyle çekici gelir ki - öteki bankadan kredi çekilip ilk bankaya faize yatırılarak para kazanılır. Bu sayede şirket iş yapmadan para kazanmanın keyfine varmaya başlar.

-

Tabii şirketin aylık gelirleri giderleri aşağı yukarı sabit olduğu için bu kadar kalabalık idari kadro nedeni ile teknik kadro hızlı genişleyemez. Ancak yeni iş alındıkça genişleme sağlanır. Böylece şirketin gerçek iş gücünün büyümesi yavaşlar. Bu da doğal karşılanır - zaten 50 bin kişiyi geçen ABD'li şirketlerin hala hızla büyümesi de ancak yalandır.

-

Büyüme yavaşlarken, elbette ters giden işler ve müşterilerden geciken ödemeler de olur. Şirketin kuvvetli bir idari mali işler kadrosu olduğu için hemen bankalardan proje finansmanları alınmaya başlanır. Bu projelerde dışarıdan yaptırılan işler için de rahatlıkla ileri vadeli çekler ve diğer finansal araçlar ile gün kurtarılır. Böylece kapsamlı bir finansal yönetim başlamış olur.

-

Elbette bu finansal yönetim toplamı yönetmektedir. Ama neyin toplamının yönetildiği tartışmalıdır. Eldeki proje portföyü içinde hangi projelerin zararda olduğunu ifade etmek zor gelir. Muhasebe ekibi zaten onlarca bankadaki hesaplar, çekler, krediler ve bunların faizleri ile meşguldür. Tek düzen muhasebede bunların hepsinin ayrı hesap kodu vardır ve bu kadar hesap kodu içinde yanlış işlem yaparak Maliye'ye yanlış beyan vermek istemezler. Bu nedenle örneğin bir personelin bordrosundan çıkabilecek maliyet kalemlerini yarı yarıya çalıştığı iki projeye eşit bölüştürmek için proje muhasebe hesabı açacak zaman olmaz.

-

An gelir, finansal yönetim, muhasebeden yardım istemeye başlar. Bankaların bazı rasyoları güzel görmesi için muhasebenin o şekilde değil de bu şekilde tutulması gerekmektedir. Ayrıca fasıllar arası aktarımlar da önerilir. Ani sermaye artırımları ve indirimleri, demirbaş alımları ve satışları başlar. Bankalardan krediler geldiği sürece, genç girişimcimiz bunları umursamaz.

-

Bu arada teminat mektubu alabilmek için arsa, apartman dairesi gibi taşınmaz malların alınması salık verilir. Zaten yazılım şirketi makina sanayinde bir fabrika olduğu için ileride depo ve ek bina yapılabilecek geniş bir arazi içinde bina yapma mantığı geçerlidir. Hemen gidilir, şehrin dışında bir yerde geniş arsalar alınır. Arsa başı boş kalmasın diye bir de bina yapılır. O binada hiç bir yazılımcı çalışmayacak istemez ama bir kaç idari personel ve bazı yazılımcılar rotasyon usulü oraya gider gelirler. Ayrıca binanın güvenliği, temizliği gibi ek masraflar çıkar. Binaya gidecek personel için servis aracı satın alınır. Araç için şoför işe alınır.

-

Gün gelir, ülkede finansal sıkıntılar patlak verir. Bazı bankalar batar. Diğer bankalar da kendi durumlarını sağlama almak için kredi borcu olan firmalardan bu kredileri kapatmalarını rica ederler. Bizim girişimci tam da bu sırada arka arkaya bazı işlerinde alacaklarını alamaz. Kendisine verilen bazı çekler de karşılıksız çıkar ve sıkıntıya düşer. Derhal kendisinin dışarıya olan borçları sınıflandırılır.

-

Öncelikte banka borçları vardır çünkü bankalar en önemli iş ortaklarıdır. Sonra şirketin güçlü görünmesini sağlayan yan masraflar - özellikle de beylik ifadeler ile ne kadar güçlü olduklarını vurgulayan reklam maliyetleri kenara ayrılır. Sonra da kısıntılar başlar. Personel maaşları aylarca eksik ödenir. Taşeron firmaların ödemeleri sudan nedenlerle geciktirilir. Örneğin her gün işe gelen bir müdür tam da o ara hasta olur ve onun dışındaki müdürler de nezaketsizlik olacağı gerekçesi ile belgelere uzun süre imza atmazlar.

-

Bu şekilde bazı taşeronlar batırılır ki onların alacaklarını tahsil etme şansı kalmasın. Bazı elemanların istifa etmesi sağlanır ki tazminat alamasın.

-

Ancak bu arada kötü bir şey olur. Hiç kimse bu şirkette çalışmak istemez, ayrıca kimse bu şirketin taşeronu olmak da istemez. Giderek nitelikli insanların şirkete girişi kısıtlanır. Ayrılanlar içinde de ilk ayrılanlar en nitelikli insanlar olur. Genç girişimcimiz bunu da önemsemez. Bilanço ve aylık mizanlarda harika rasyolar vardır. Daha tahsil edemese de ileride alacağı paraları koyunca harika sayılar oluşmaktadır. Zaten finansal performans en önemli performanstır.

-

Bu arada ortaya çıkan banka krizleri sonrası ülkede yeni yasalar çıkar. Bankaların başka bazı rasyolara da bakması istenir. Bu rasyolar, önceki rasyoları iyi göstermek için oynanmış bilançolarda hassaslaşan yerleri gıdıklamaktadır. Rasyo sayısı artınca, arkadaşın bilançosu da o kadar sağlam gözükmez. Bu yeni teknik yüzünden ahbaplık gelişmiş olan banka şube müdürlerinin de eli kolu bağlanır.

-

Şirket tüm odağını soruna çözmeye verir. Tüm idareciler sürekli bankalara gidip kredi aramaktadır. Kredi sağlayabilen idareci ödüllendirilir. Bu arada projelerdeki aksaklıklar raporlansa dahi dinlenmez ve müşterlerden gelecek ödemeler daha da çok gecikir. Müşteriden gelecek olan gerçekten hak edilmiş para yerine bankadan gelen borç işe süreç yürütme alışkanlığı daha da derinleşir.

-

Gün gelir, şirketin rasyoları o kadar zayıflar ki şirketin borç ödeme kapasitesini doldurduğu anlaşılır. O an şirket yeni kredi alamaz olur ve müşterilerine odaklanması gerektiğini anlar.

-

Ancak müşterilerin bazıları için olan olmuş, iş işten geçmiştir. Bu müşteriler ile artık insani konuşma değil de sözleşme maddeleri üzerinden tartışma geçerlidir Bu ortam altında müşteri ödemeleri alınamaz, bankalardan ek kredi alınamaz. Şirket iflasa sürüklenir. Ancak dışarıya bu hissettirilmez.

-

Tam bu sırada genç girişimcimize uluslar arası bir ödül gelir. İki yıl önceki oynanmış bilançoları örnek göstererek, en hızlı büyüyen şirketlerden birisinin kurucusu olarak bir ödüle aday gösterilmiştir ve yıllar süren süreç sonunda bir şekilde seçilmiştir. Bu ödül bankaların ve yatırımcıların şirkete bakışını değiştirir - kredi muslukları açılır, hatta şirketin hisselerinin bir bölümü oldukça iyi bir bedel karşılığı satılır.

-

Şirket iflastan dönmüştür. Bu sırada büyük emekleri geçen idari mali kadroya derhal ikramiyeler verilir. Ancak o dar zamanda maaşlarını eksik alarak projeleri zamanında tamamlayan esas çalışanlar unutulur. Şirket iflastan kurtulmuştur ama personeli ile olan barışı bozulmuştur bir kere.

-

Genç girişimcimizin bu krizden çıkarttığı ders ise, finans departmanını güçlendirmek olur ve 10 kişi daha işe alarak 20 kişilik bir finans departmanı kurulur.


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

Masa düzeni

-
-
-
-

Az önce okuduğum bir yazıya göre arada bir masanızın düzenini değiştirmek, sizi rutinden çıkarttığı için olaylara dikkatinizi verme becerinizi artırıyormuş.

- -

O zaman, masası hep dağınık olan kişiler acaba size en çok dikkatini veren kişiler mi? :)


-
-
- - -
-
- -
-
-
-

14 Ekim 2008

- -
- - -
-
-
-

İki blog keşfi

-
-
-
-

Bugün Rusya, Ukrayna ve diğer kuzey komşularımızı değişik bir gözle anlatan iki blog keşfettim. Bağlantılarını da burada paylaşmak istedim. Dinç Arslan ve Ulaş Ergin'in blogları kesinlikle okunmaya değer.


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

OpenOffice.org 3.0 Duyuruldu

-
-
-
-

ooo3.pngOpenOffice.org projesinin sekizinci doğum gününde topluluk, OpenOffice.org 3.0'ın yayınlandığını duyurdu. Yazılımın üçüncü ana sürümü, kullanıcıları için pek çok yeni özellik ve gelişmiş, geliştirilebilir araçlar sunuyor. OpenOffice.org artık Mac OS X platformunda da çalışıyor.

OpenOffice.org 3.0 basit bir uygulamadan çok daha fazlasını içeriyor. Bu sürümle birlikte; temel kelime işlemci, hesap tablosu, grafik, formül ve veritabanı uygulamaları, OpenOffice.org eklenti deposundan indirilebilen genişletmelerle daha da zenginleştirilebiliyor. Bu özellik sayesinde kurumsal kullanıcılar, okullar ve ev kullanıcıları ofis yazılımlarını kendi isteklerine göre özelleştirebiliyor.

Yüz binlerce kişi tarafından indirilen OpenOffice.org'un önceki sürümleri, projenin popülaritesini kanıtlamakta. OpenOffice.org projesinin topluluk yöneticisi olan Louis Suarez-Potts, yeni sürümle ilgili olarak özetle “Pazarımız büyüdü.” dedi ve sözlerine ”Hükumetler ve kuruluşlar ardı ardına 'Açık Belge Biçimi'ni (OOo'nun öntanımlı kullandığı, ISO onaylı standart) seçiyor, eşzamanlı olarak OpenOffice.org'u da benimsiyor ve çok seviyorlar. OpenOffice.org 3.0 sürümüyle uygulama artık; MS Office ile daha uyumlu, yetenekli ve geliştirilebilir bir hale geldi.” diye devam etti.

OpenOffice.org pazarlama takımı ise yeni sürüm hakkında “OpenOffice.org artık eskisinden çok daha güçlü. MS Access 2007 .accdb dosya desteği, geliştirilmiş VBA makro desteği ve MS Office Open XML dosyalarını okuyabilme yeteneği sayesinde MS Office yazılımından göç her zamankinden çok daha kolay.” diyor.

OpenOffice.org 3.0; yeni “Başlangıç Merkezi”, güncellenen açılış ekranı, yeni simgeseti ve kullanılabilirlik geliştirmeleriyle yepyeni bir yüze kavuşmuş durumda. Yeni özellikler şu şekilde:

-

Kelime İşlemci (Writer)

-
    -
  • Düzenleme sırasında çoklu sayfa görünümüne izin veren yeni yakınlaştırma kontrolü
  • -
  • Yeni ve güçlü çoklu dil desteği
  • -
  • Geliştirilmiş “Notlar” özelliği
  • -
  • Geleneksel ofis belgelerinin yanı sıra web sayfalarını ve wiki belgelerini düzenleyebilme
  • -
-

Hesap Tablosu (Calc)

-
    -
  • Tablo başına 1024'e kadar sütun desteği
  • -
  • Yeni güçlü eşitlik hesaplayıcı
  • -
  • Çoklu kullanıcılar için yeni işbirliği özelliği
  • -
-

Çizim (Draw)

-
    -
  • Poster boyutunda grafik düzenleme yeteneği
  • -
-

Sunu (Impress)

-
    -
  • Sunu içinde yer alan tablolar için düzenleyici
  • -
-


OpenOffice.org'un eklenti destekleme özelliği 3.0 ile de devam ediyor. Farklı geliştiriciler tarafından hazırlanan sunu hazırlama konsolu, ticaret analitikler desteği, PDF aktarma, melez PDF belgesi oluşturma gibi pek çok özellik sağlayan eklentilerin sayısı gün geçtikçe artıyor.

OpenOffice.org 3.0, kullanıcılarının Kelime İşlemci (Writer) ile web ve wiki belgesi oluşturmasını sağlayarak, XHTML ve MediaWiki gibi belli bir kesime hitap eden web dillerini öğrenmeye gerek kalmadan, Web 2.0 dünyasına katılmasını kolaylaştırıyor.

OpenOffice.org'un yeni sürümünün PiSi paketinin yakın bir zamanda depomuzdaki yerini almasını bekliyoruz.


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

ceeebit

-
-
-
-

-11 Ekim Cumartesi günü, Özgürlükİçin ekibi ile birlikte Cebit fuarında -Pardus standındaydık. -

- -

-Bir süredir üstünde çalıştığımız robotumuz -İnci'yi tanıttık, -geldiği noktayı gösterdik, birkaç küçük gösterisini yaptık. -

- - - -

-İnci, araştırma geliştirme amaçlı, omni hareket sistemine sahip bir -robot. Ayrıca üzerindeki gömülü bilgisayarında çalışan Pardus 2008 ile, -dünyada Pardus'la çalışan ilk otonom robot :) -

- -

-Şehre çok uzak ve biçimsiz bir yerde yapılmasına karşın, üşenmeyip gelen -Pardus gönüllüleriyle çok keyifli vakit geçirdik. -


-
-
- - -
-
- -
-
-
-

13 Ekim 2008

- -
- - -
-
-
-

Linux Yüklü Dijital Piyano

-
-
-
-

YAMAHA3.jpg

-

Yamaha firmasının dijital piyano modelleri arasına, Linux işletim sistemi gömülü olarak gelen yeni modeller ekledi. Bir gömülü Linux dağıtımı olan Montavista Linux, akustik kayıt ve web temelli uygulamalarla bütünleşik çalışabilen yeni arabirim imkânları sunuyor. Piyanonun içinde 333 Mhz Geode temelli bir anakart ve Montavista Linux mevcut.

-

Yamaha'nın ürettiği bu piyanonun tuşlarının altına yerleştirilmiş minik bir kutuda yer alan kontrol ünitesi içindeki LSI (Large-scale integration – Geniş-ölçekli entegrasyon) özellikli işlemci, özel bir RTOS (Real Time Operating System – Gerçek Zamanlı İşletim Sistemi) çalıştırıyor. RTOS, bir tuşa basılmasıyla bırakılması arasında, tellere vuran çekiçlerin hareketlerini izleyen hassas alıcıların gönderdiği verileri topluyor. Çekiçlerin ve tuş basınçlarını kaydederek, gerçek bir piyano çalışının verileri bu özel sistem aracılığıyla kayıt altında alınıyor.

Çekiçlerin ve tuş basıncının konumunu ölçmenin ötesinde, RTOS onları denetleyebiliyor ve böylece yakaladığı verileri “icra” olarak yeniden üretiyor. Sistemde bir optik sürücü mevcut ve kullanıcılar kendi icralarının kaydını yapıp dinleyebildikleri gibi aynı zamanda da büyük üstatların önemli icralarının kayıtlarını da satın alabilirler.

-

Daha anlaşılır bir dille söylemek gerekirse, evinizdeki bu piyano ile Fahir Atakoğlu'nun sadece son albümünü değil, tuşlara dokunuşunu ve piyano çalışını da evinize taşıyabiliyorsunuz.

-

Mark IV Disklavier modeli ile Yamaha, sisteme gömülü olan Linux işletim sistemi sayesinde web temelli istemci/sunucu ile uzaktan kontrol arabiriminin çalışmasına olanak tanınıyor ve bu sayede kullanıcılar, piyanonun yanına kadar gidip optik sürücülerden müziği yüklemek ve çalmak zahmetinden de kurtuluyorlar. Bu uzaktan kumanda sayesinde kullanıcılar akustik kayıt, kayıt işleme ve çalma özellikleri yanında, uzak müzik servislerinin tekliflerini de değerlendirme imkânı bularak İnternet üzerinden alışveriş yapabiliyor.

Mark IV Disklavier piyano, 333 Mhz AMD Geode tabanlı bir anakart ve Montavista Linux ile birlikte çalışıyor. RAM boyutu 256 MB olup, sabit diski 80 GB genişliğinde. I/O bileşenleri, Ethernet, WiFi, çift USB portu, seri portlar, ses giriş/çıkış, video giriş ve stereo hoparlörden oluşuyor. Piyanomuzda ayrıca PCI genişleme arabirimi de bulunmaktadır :).


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

Arch Linux'da Türkçe Yazım Kontrolü

-
-
-
-arch linuxBugün Samed BEYRİBEY'in büyük katkılarıyla Arch Linux Türkiye Topluluğu listelerine düşen e-posta'yı görmeyen ve bilmeyenler için buraya da hiç bir değişiklik yapmadan göndermek istiyorum.

Merhaba,
Zemberek geliştiricisi Serkan Kaba ile konuştuktan sonra, (Archlinux'da
Türkçe yazım denetimini nasıl sağladığımızı teknik olarak anlattım)
bir duyuru yolu ile topluluğumuzu bilgilendirmek istedim.

Bu duyuruyu, gezegen, blog vs. ortamlarda yazabilir, paylaşabilirsiniz.

AUR üzerindeki zemberek-server paketinin yardımı ile enchant destekli
*tüm* uygulamalarda Türkçe yazım denetimini sorunsuz olarak
yapabiliyoruz. Bu iş için zemberek kütüphanesinin *şu an için* 2.1
sürümü kullanılıyor, bir takım testlerden sonra tekrar paket haline
getirilerek son sürümü olan 2.1.1'e geçiş yapılacak.

Ayrıca, KDE3 kullanıcıları, zpspell paketini kurarak, yazım
denetimini sorunsuz gerçekleştiriyor. KDE4 enchant kütüphanesini
kullandığı için KDE4 kullanıcılarının zpspell paketini kurmasına
gerek kalmıyor.

zemberek-server init betiği ister Sun-JRE ister OpenJDK (icedtea vs.)
şekilde çalıştırılmaya hazır biçimde, hem AUR'da hem de SVN[1]'de yerini
almış durumda.

GTKseverleri de ayrıca bilgilendirmek istiyorum: enchant destekleyen
her türlü programda (xchat, gaim, evolution ve son olarak claws-mail
-ilk akla gelenler- vs) Türkçe yazım denetimi yapmak mümkün oluyor.

Ayrıca, http://code.google.com/p/zemberek proje sayfasındaki openoffice
eklentisi ile de, OpenOffice üzerinde Türkçe yazım denetimi yapmak
mümkün oluyor.

[1] = http://svn.archlinuxtr.org/projects/packages/zemberek-server/

Saygılarımla,
Samed Beyribey

Tüm Arch Linux kullanıcılarına afiyet olsun!
- -

-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

Like a Prayer

-
-
-
-

Son dönemde mail istemcilerinin büyük çoğunluğunu İnternet tarayıcıları ele geçirdi. Çogu kişi IMAP istemciler yerine aslen HTTP-IMAP geçidi olan webmail uygulamalarını tercih ediyor.

-

Webmail sunucularının büyük çoğunluğu durumsuz çalışıyor. Yani istemciden gelen her tıklamada yeni bir IMAP oturumu açıp işlemi yaptıktan sonra oturumu kaybediyor. Rouncube gibi posta başlık listesini tamponda tutanlar var ama hala bir “yetkilendir-işlemi yap-çık” döngüsünü işletmek zorunda kalıyorlar.

-

İşlemi hızlandırmanın bir yolu bir IMAP vekil sunucusu yerleştirmek (Bkz. imapproxy) böylelikle yetkilendirmeyi ve oturumu açık tutarak yeniden kullanabiliyorsunuz. Ama hala sunucu, istemcinin durumunu tutmadığı için thunderbird, kmail, evolution benzeri istemcilerden yavaşsınız.

-

İki yıl kadar önce, ya bunu yapmışlardır dediğimde Prayer‘la karşılaştım. C ile yazılmış, tam düşündüğüm gibi her oturum için oturumun durumunu sunucuda tutan, IMAP oturumunu açık tutan ve dolayısıyla her tıklamada sadece minimum gerekli işlemi yapan, bu sayede de son derece hızlı bir webmail yazılımı. Kullanıcı arayüzü çirkin olsa da hızı gerçekten müthiş. Ayrıca PHP tabanlı olan webmail’lere göre güvenli olduğu da muhakkak. Eminim Java gibi bir dilde uygulama sunucuları üzerinde çalışan muadilleri vardır ama ben Prayer’in bu koşullarda popüler olmamasına çok şaşırıyorum.

-

Eeee, bunları niye şimdi yazıyorsun derseniz, yeni sürümü çıkmış, Gökdeniz kurmuş, ben duyurayım, siz kurun, sonra gelenler de hani bana hani bana desin diye… :)


-
-
- - -
-
- -
-
-
- -
- - -
-
-
-

Liste.linux.org.tr yenilendi

-
-
-
-

Uzun süredir aynı tasarım ve içerik ile yayında olan liste.linux.org.tr sayfamız yenilendi. Çalışmada emeği geçen herkese özellikle sayfayı hazırlayan Mehmet Fatih YILDIZ (mfyz) ‘a teşekkür ediyoruz.

-

liste sayfası, linux.org.tr, lkd.org.tr ve bunlara ağlı alt alan adları ile ilgili her tür görüş, öneri ve isteklerinizi web[at]linux.org.tr adresine yazabilirsiniz.

-

Not: Linux gezegeni hafta sonu yaşanan bir dns sorunu sebebi ile güncellenememiştir. Bu aksaklıktan dolayı bütün gezegen sakinlerinden özür dileriz.


-
-
- - -
-
- -
-
-
-
- - - - - - - + + + + + \ No newline at end of file diff --git a/www/opml.xml b/www/opml.xml index a2ffb95..0fadb33 100644 --- a/www/opml.xml +++ b/www/opml.xml @@ -2,8 +2,8 @@ Linux Gezegeni - Pzt, 20 Eki 2008 01:21:58 +0000 - Pzt, 20 Eki 2008 01:21:58 +0000 + Per, 23 Eki 2008 23:22:40 +0000 + Per, 23 Eki 2008 23:22:40 +0000 Gezegen Ekibi gezegen@linux.org.tr diff --git a/www/rss10.xml b/www/rss10.xml index e7a4744..fea53b1 100644 --- a/www/rss10.xml +++ b/www/rss10.xml @@ -13,120 +13,60 @@ + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - Serkan Altuntaş: Samsung ML-1610 Mono Laser Printer - http://serkan.gen.tr/aug/181 - Babam acilen bir lazer yazıcıya ihtiyaç duyunca bugün aşırı değerli dolara rağmen Samsung ML-1610 Mono Laser Printer aldık. Hatta o kadar acilen lazımdı ki şehirdeki Bimeks ve iki Teknosa&#8217;da bu modelden kutusu açılmamış tek bir ürün bile kalmadığından benim hiç yapmayacağım bir şeyi yapıp teşhir ürününü aldık. Gerçi karlı da çıktık. Normalde kutuyla gelen %60 [...] - 2008-10-19T20:36:35+00:00 + + Erhan Ekici: Ne onlar başka tanrının çocukları, ne de biz… + http://www.erhanekici.com/blog/2008/10/20/ne-onlar-baska-tanrinin-cocuklari-ne-de-biz/ + &#8220;Ne senden fazlayım / Ne senden az / Aynı macerada ayrı biraz / Gözle biçim biçim / Kalple anlar içim / Ayrı gayrı olmaz / Sen yoksan ben hiçim +Aç kardelen aç / Dağın olayım, suyun olayım / Göğün olayım aç +Her çiçeğin kar altından / Güneşe giden masalında / Yaşamak yeniden tazelenir / Yeniden anlamlanır [...] + 2008-10-23T22:48:01+00:00 - - Necati Demir: Ülkemden Şahit Manzaraları - I - http://blog.demir.web.tr/2008/10/lkemden-ahit-manzaralar-i.html - Dikkat: Gerçek Bir Olaydır!<br /><br /><br />40 yaşlarında bir adam, 1 yaşını henüz doldurmuş çocuğu için dışarı süt almaya çıkmıştır. Mahallede bir bağrışma duyar, yaklaşır. Bir kavga gürültü vardır, olay biterken jandarma sorar: "şahit misin?". "Evet" cevabını veren adam o akşam evine dönemez. O akşam nezarethanede kalır, ertesi gün cezaevine gönderilir. Anlamamıştır, şahit olmaya gelmişti sadece. 45 gün sonra duruşma var derler, 45 gün cezaevinde kalmak zorundadır. 45 gün sonra da heyecan içinde çıkacağını düşünmektedir, ne de olsa sadece şahit olmaya gelmişti. Ve mahkeme günü gelip çatmıştır, çıkıp çocuklarını görecektir artık. Zaten, cezaevindeki görüşlerde de karısına, "çocuklara dikkat et" deyip durmuştu, özlemişti anlaşılan. Ama, o gün hakim mahkemeyi 1 ay erteler. Özlemle sarılma umutları bir anda sönmüştür Sebepsiz yere 1 ay daha 4 duvar arasında yaşamak zorunda kalacaktır. - 2008-10-19T16:44:00+00:00 + + Tonguç Yumruk: Eve gitsem de güzel müzikler dinlesem + http://tonguc.name/blog/net/sazlamesai.html + <p>...diyorsanız, ama ne dinleyeceğinizi bilemiyorsanız işte size bunun için güzel bir <a href="http://sazlamesai.net">ortam</a>. Bu site tamamen &quot;Yahu bu albüm güzelmiş, blog'a yazmalı&quot; diyipte yazamadığım günlerin neticesinde ortaya çıkmış bir ortam. Her türlü arıza veya öneri için tongucyumruk &lt;salyangoz&gt; fazlamesai.net adresinden kontak kurmak mümkün tabii. Kod mu? Kod da yakında açılıyor. Bizi izlemeye devam edin.</p> + 2008-10-23T22:47:56+00:00 - - Serkan Kaba: Bazaar sürüm kontrol sistemi - - Daha önce sadece Java-Gnome projesine yama (Bazaar terminolojisiyle bundle) göndermek için kullandığım Bazaar&#8216;ı bu haftasonu deneme fırsatım oldu. Uzaktaki bir arkadaşım ile basit bir proje üzerinde çalışacaktık. Ne kadar basit olsa bile klasik yöntemlerle çalışsak aramızda ya email ile sürekli kod gidip gelecek ya da en iyi ihtimalle FTP sunucusu üzerine yazarak kodlarımızı paylaşacaktık. CVS, [...] - 2008-10-19T09:34:01+00:00 + + Murat Hazer: Agile Yazılım Geliştirme ve Scrum + http://mhazer.blogspot.com/2008/10/agile-yazlm-gelitirme-ve-scrum.html + Hepimiz içinde bulunduğumuz projelerde çeşitli sorunlarla karşı karşıya kalıyoruz. Bu sorunlar projelerin zamanında bitirilememesine, müşterinin isteklerine uymayan yazılımlar üretilmesine ve hatta projelerin başarısız olmasına bile sebep olabiliyorlar. Ben kişisel olarak projelerin gidişatına ciddi etkilerde bulunan sorunların kaynağının geleneksel yazılım geliştirme süreçleri olduğunu düşünüyorum. İşte bu yazımda başlıktan da anlaşılabileceği gibi yazılım geliştirme süreçlerinden kaynaklanan sorunlara çözüm olarak üretilen Agile Yazılım Geliştirme'den ve Scrum'dan kısaca bahsedeceğim.<br /><br />Projelerde karşılaştığım sorunlardan konumuza uygun olanları şu şekilde sıralayabilirim;<ul><li> teknolojinin çok hızlı gelişmesi ve bu yeniliklerin projeye uygulanamaması</li><li>müşterilerin proje başlangıcında büyük resmin tamamını yani bütün gereksinimleri ortaya koyamamaları</li><li> müşterilerin gereksinimlerinin çok çabuk ve sık değişmesinden dolayı müşterilerin güncel ihtiyaçlarına cevap veremeyen bir yazılım ortaya çıkması<br /></li><li> projelerin yönetiminin gittikçe daha zor ve karmaşık hale gelmesi (bir yazılım geliştirme sürecinde 102 ayrı role'un olduğunu duymuştum)</li></ul> Dünyanın her köşesindeki yazılım geliştirme takımı gibi bu sorunlarla karşılaşan 17 profesyonel Amerika'nın Utah eyaletinde çözüm üretebilmek, müşteri memnuniyetini arttırabilmek ve başarısız olan projelerin oranını düşürmek için 2001 yılının Şubat ayında bir araya geliyorlar ve aşağıdaki manifestoyu ortaya koyuyorlar;<blockquote><br /><span>The Agile Manifesto</span> <span>We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:</span><br /><br /><span>• Individuals and interactions over processes and tools</span> <span><br />• Working software over comprehensive documentation</span> <span><br />• Customer collaboration over contract negotiation</span> <span><br />• Responding to change over following a plan</span> <span><br /><br />That is, while there is value in the items on the right, we value the items on the left more.</span> <span><br /><br />Copyright 2001, the Agile Manifesto authors</span><br /><br />(daha fazla bilgi için <a href="http://www.agilemanifesto.org/">agilemanifesto.org</a>)<br /><br /></blockquote>Manifestonun açıkca belirtiği gibi Agile geliştirme sürecinin amacı; plan, dökümantasyon, proses ve araçlardan ziyade müşteri memnuniyeti, çalışan yazılım, uyumlu yazılım geliştirme takımı ve müşteri isteklerinde oluşan değişikliklere göre kısa zamanda geliştirilebilecek yazılımlar üretmek (buradan Agile yazılım geliştirmenin plansız, dökümansız yazılım geliştirmeyi teşvik ettiği sonucuna varmamak gerekiyor çünkü Agile yazılım geliştirme sadece bunlardan daha önemli kavramların olduğunu vurguluyor). "Agile yazılım geliştirme" süreçlerin, dökümanların ve dizaynların proje başlangıcında tümüyle tanımlanmasını değil, geliştirme aşamasında karşılaşılan ve değişen koşullara göre gerekli kararların verilmesi gerektiğini savunuyor.<br /><br />Scrum'u Agile yazılım geliştirme metodunun yukarıda bahsettiğimiz presiplerine uygun olarak geliştirilmiş ve tasarlanmış bir metod olarak tanımlayabiliriz. (Diğer metodlardan XP ve Lean Software Development hakkında detaylı bilgilere <a href="http://en.wikipedia.org/wiki/Extreme_Programming">buradan</a> ve <a href="http://en.wikipedia.org/wiki/Lean_software_development">buradan</a> ulaşabilirsiniz). Scrum diğer agile yöntemleri gibi çok fazla kuralı olmayan, sadece belirli prensipleri olan ve kolayca projelere uygulanabilecek bir yöntem.<br /><br />Scrum'un genel akış şeması;<br /><br /><a href="http://www.scrum-master.com/processguidance/v2/Images/diagram.jpg"><img src="http://www.scrum-master.com/processguidance/v2/Images/diagram.jpg" alt="" border="0" /></a><br />Scrum'ı sadece yazılım geliştirmek için değil hayatta karşılaşabileceğiniz her türlü olaya uygulanabilecek bir yöntem olarak düşünebilirsiniz. Şimdi kısaca yukarıdaki şemada geçen kavramları genel bir Scrum planlaması ve akışı içinde adım adım anlatmaya çalışacağım.<br /><br />1- Roller (Roles)<br /><br /><ul><li> Ürün Sahibi (Product Owner)</li><li> Scrum Yöneticisi (Scrum Master)</li><li> Takım Üyesi (Team Member)</li></ul><br />2- Toplantılar (Meetings)<br /><br /><ul><li> Sprint Planlama (Sprint Planning)</li><li> Sprint gözden geçirme (Sprint Review)</li><li> Günlük Scrum toplantısı (Daily Scrum)</li></ul><br />3- Kavramlar (Artifacts)<br /><br /><ul><li> Ürün gereksinim dökümanı (Product Backlog)</li><li> Sprint dökümanı (Sprint Backlog)</li><li> Sprint kalan zaman grafiği (Burndown Chart)</li></ul><br />Projenin başlangıç adımı olarak yazılım gereksinimlerinin (requirements, features) <b>ürün sahibi</b> tarafından ü<b>rün gereksinim dökümanı</b>na yazılmasını düşünebiliriz. Bu dökümanın sahibi <b>ürün sahibi</b>dir ve gereksinimleri önceliklerine (priority) göre sıralar. <b>Ürün sahibi</b> bu dökümana yazılım geliştirme süresince eklemeler ve çıkarmalar yapıp öncelikleri değiştirme hakkına sahiptir. Böylece <b>ürün sahibi</b> değişen ihtiyaçlarına uygun olarak bir yazılıma sahip olma şansını yakalamış olur.<br /><br />Gereksinimler belirlendikten sonra yazılım geliştirme takımı <b>Sprint planlama toplantısı</b>nda bir sonraki Sprint'de geliştirilmek üzere <b>ürün gereksinim dökümanı</b>ndan <b>ürün sahibinin</b> belirlediği yüksek öncelikli gereksinimleri seçerek <b>Sprint dökümanı</b>na aktarırlar. Bu toplantıya <b>Scrum yöneticisi</b>, <b>ürün sahibi</b> ve <b>takım üyeleri</b> katılırlar ve Sprint süresi en az 2 en fazla 4 hafta olarak belirlenir.<br /><br /><b>Sprint planlama toplantıları</b>nı <b>Scrum yöneticisi</b> yönetir. <b>Scrum yöneticisi</b>nin asıl görevi Scrum'un temel prensiplerinin projeye uygulanmasını, bu prensiplerin <b>takım üyeleri</b>nce doğru şekilde anlaşılmasını sağlamaktır. En önemli görevi ise Sprint süresince takımı dışardan gelebilecek etkilere karşı korumak ve takımın ihtiyaçlarını karşılamaktır.<br /><br />Scrum her Sprint'in sonunda mutlaka <b>ürün sahibi</b>ne kullanabileceği bir yazılım sağlamayı hedefler, bundan dolayı planlanan Sprint süresi (2-4 hafta) asla uzatılmaz. Fakat eğer bir gereksinim belirlenen Sprint süresi içerisinde gerçekleştirilemeyecekse bir sonraki Sprint'e aktarılabilir. Ve aynı şekilde eğer Sprint süresi bitmeden <b>Sprint dökümanı</b>ndaki gereksinimlerin hepsi tamamlanmışsa <b>ürün gereksinim dökümanı</b>ndan yeni gereksinimler <b>Sprint dökümanı</b>na aktarılabilir.<br /><br /><b>Sprint planlama toplatısı</b>nda belirlenen gereksinimler <b>takım üyeleri</b>nce küçük görevlere (tasks) bölünerek takım üyelerine geliştirilmek üzere atanır. Scrum takımı geleneksel yazılım geliştirme süreçlerinden farklı olarak kesin rollere (architect, tester, developer, disagner vb.) sahip değildir. Scrum takımındaki bütün üyeler çapraz görevlerde yer alabilirler, böylece kodun tek bir kişiye bağımlılığı riski ortadan kaldırılmış olur. <b>Sprint dökümanı</b>nın sahibi bu sefer ürün sahibi değil yazılım geliştirme takımıdır, dolayısıyla bu dökümana <b>ürün sahibi</b> değil <b>takım üyeleri</b> katkıda bulunurlar.<br /><br /><b>Sprint dökümanı</b>na aktarılan gereksinimlerin tahmini geliştirme süresi saat bazında <b>takım üyeleri</b>nce belirlenir ve Sprint boyunca sürekli olarak tahmini bu zamanlar güncellenerek <b>Sprint kalan zaman grafikleri</b> (burndown chart) oluşturulur. Böylece Sprint süresince <b>ürün sahibi</b> ve <b>scrum yöneticisi</b> Sprint'in genel gidişi hakkında bilgi sahibi olur, aynı zamanda <b>takım elemanları</b> da kalan iş sürelerini ve harcadıkları zamanı takip edebilirler.<br /><br />Scrum'un belki de verimliliği artıran en önemli kavramlarından biri de <b>günlük Sprint toplantıları</b>dır. Bu toplantılar her gün belirli saatlerde farklı bir <b>takım üyesi</b>nin liderliğinde ayak üstü yapılır ve en fazla 15 dakika sürer. Bu toplantılarda her takım üyesi şu 3 soruya cevap verir;<br /><br /><ul><li>Dün ne yaptım?</li><li>Bugün ne yapacağım?</li><li>Önümde olan engeller ve karşılaştığım sorunlar neler?</li></ul><br />bu toplatılara herkesin zamanında ve davet edilmeden katılması ve uzun sürmemesi çok önemlidir. Bu toplatılar sayesinde <b>takım üyeleri</b>nin her biri diğer üyelerin nelerle uğraştığını öğrenme fırsatını edinirler ve çalışacakları işleri diğerleriyle paylaştıkları için işlerine daha iyi konsantre olabilirler.<br /><br />Her Sprint'in bitiminde ortaya konulan ürün hakkında geri besleme alabilmek için yazılımla alakalı her türlü kişiye (Ürün sahibi, pazarlama, diğer takımlar vs.) açık <b>Sprint gözden geçirme toplantısı</b> yapılır. Bu toplantının amacı yazılımın <b>ürün sahibinin</b> gereksinimlerine uygun olarak geliştirildiğinden emin olmaktır. Bu sayede müşterinin gereksinimleri bir şekilde yanlış anlaşılmış ise bu farkedilir ve bir sonraki Sprint'de bu hataların önüne geçilir.<br /><br />Bu adımlar <b>ürün sahibi</b>nin <b>ürün gereksinim dökümanı</b>na yazdığı, zaman içinde geliştirip, değiştirdiği gereksinimler bitene kadar tekrarlanır.<br /><br />Umarım burada anlattıklarım Agile ve Scrum hakkında bir fikir sahibi olmanızı sağlamıştır. Özellikle Scrum'un projelerinizdeki başarı oranlarını ve kişisel olarak verimliliğinizi arttıracağına inanıyorum. Scrum ve Agile ilgili deneyimlerinizi ve sorularınızı paylaşabilirseniz sevinirim.<br /><br />Scrum ile ilgili daha detaylı bilgilere aşağıdaki linklerden ulaşabilirsiniz.<br /><br />Kaynaklar:<br /><a href="http://agilemanifesto.org/">http://agilemanifesto.org/</a><br /><a href="http://www.pragprog.com/titles/pad/practices-of-an-agile-developer">http://www.pragprog.com/titles/pad/practices-of-an-agile-developer</a><br /><a href="http://en.wikipedia.org/wiki/Agile_software_development">http://en.wikipedia.org/wiki/Agile_software_development</a><br /><a href="http://www.ibm.com/developerworks/rational/library/08/0701_ellingsworth/">http://www.ibm.com/developerworks/rational/library/08/0701_ellingsworth/</a><br /><a href="http://scrum-master.com/en/default.aspx">http://scrum-master.com/en/default.aspx</a><br /><a href="http://www.scrumalliance.org/">http://www.scrumalliance.org/</a> + 2008-10-23T22:47:53+00:00 - - Enver Altın: A brave new world - http://enveraltin.com/blog/1910080354.html - <p>End of an era marks the beginning of another one. With enormous sculpted success standing right behind me, I've recently quit <a href="http://www.cellenity.com/">Cellenity</a> to <a href="http://www.construia.com/">explore</a> what else the future has to offer.</p> -<p>On the way back home I stumbled upon the tail of this guy:</p> -<p align="center"><img src="http://enveraltin.com/img/kayserili.jpg" /></p> -<p>I spent the time and fuel that I'd normally be wasting around rush-hours Istanbul traffic on shows like Cebit Eurasia and Autoshow. Quick sum: Cebit is incrementally better every year, but Autoshow was spectacular. I've had the privilege to peek inside the Megane Coupe Concept, I shook hands with a member of the team who designed Sakarya University's 100% solar-cell racing car. Although fun, the rest was usual: short skirts, leg ladies, inefficient internal combustion engines, ugly car designs, little-to-no steps forward in evolution of transportation. Hybrids and electric vehicles receiving more attention was encouraging.</p> -<p>What comes next, I'll be blogging.</p> - 2008-10-19T07:54:00+00:00 - - - Murat Hazer: JBoss Seam kitapları .... - http://mhazer.blogspot.com/2008/10/jboss-seam-kitaplar.html - Bir önceki yazımda JBoss Seam'in klasik Java Enterprise Development (JEE)'a kazandırdığı çeviklikten, programlama modeline, metodolojisine getirdiği <a href="http://solutionsfit.com/blog/2008/09/29/seam-and-web-beans-not-just-evolutionary-revolutionary/">devrim</a> niteliğindeki özelliklerinden bahsetmeye çalıştım. Yeni bir teknoloji öğrenmenin en iyi yolunun o konu hakkında yazılmış kaliteli kitap(lar)ı okumak olduğunu düşünenlerdenim. Bu yazımda da Seam hakkında yazılmış kitapları ve bu kitaplar hakkındaki düşüncelerimi paylaşmaya çalışacağım.<br /><br /><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPeoZaWnNaI/AAAAAAAAAZU/dAIV-io6JuA/s1600-h/seaminaction.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPeoZaWnNaI/AAAAAAAAAZU/dAIV-io6JuA/s200/seaminaction.jpg" alt="" id="BLOGGER_PHOTO_ID_5257856244502705570" border="0" /></a>"<a href="http://www.manning.com/dallen/">Seam in Action</a>" Seam'i en kapsamlı şekilde anlatan, okunması rahat ve bol örnekleri olan bir kitap. Manning yayınevinin diğer kitapları gibi bu kitap da oldukça kaliteli ve çok iyi edit edilmiş. Bu kitabı <a href="http://www.manning.com/about/meap.html">Early Access</a> seviyesinden beri takip ediyorum ve her sayfasından yeni bir şeyler öğrendim diyebilirim. Ayrıca referans kitabı olarak kullanılabilecek şekilde kapsamlı olduğu için başucu kitabı niteliğinde. Fakat kitap Seam'e ilk başlayanlar için biraz ağır gelebilir onun için biraz deneyim kazanıldıktan sonra okunmalı. (5/5)<br /><br /><br /><br /><hr /><br /><a href="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPesnXwmmnI/AAAAAAAAAZk/F7WdXGU1WHc/s1600-h/9781590597927.gif"><img src="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPesnXwmmnI/AAAAAAAAAZk/F7WdXGU1WHc/s200/9781590597927.gif" alt="" id="BLOGGER_PHOTO_ID_5257860882371091058" border="0" /></a>Apress yayınevinden çıkan "<a href="http://www.apress.com/book/view/1590597923">Beginning JBoss Seam</a>" özellikle yeni başlayanlar için çok yararlı diyebilirim. Özellikle Seam'in getirdiği yeniliklerden Bijection ve Web Conversation kavramının temellerini başarılı ve kolay anlaşılır bir şekilde anlatıyor.<br />(4/5)<br /><p><br /></p><p><br /></p><br /><br /><hr /><p></p><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetUVjXGHI/AAAAAAAAAZ0/3Lx6TlKXZl0/s1600-h/seamyuan.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetUVjXGHI/AAAAAAAAAZ0/3Lx6TlKXZl0/s200/seamyuan.jpg" alt="" id="BLOGGER_PHOTO_ID_5257861654872791154" border="0" /></a><br />Seam'in 1.x versiyonu sürecindeki geliştiricilerinden<span> Michael Juntao Yuan'ın yazarlığını yaptığı </span>"<a href="http://www.amazon.com/Seam-Framework-Experience-Evolution-JBoss/dp/0137129394/ref=pd_bbs_sr_5?ie=UTF8&amp;s=books&amp;qid=1224268151&amp;sr=8-5">JBoss Seam: Simplicity and Power Beyond Java</a>" <span> bu kitap yine Seam'e yeni başlayanlar için güzel bir kaynak. Şu anda satışta olan versiyon Seam 1.x sürümünü kapsıyor fakat yakın zamanda Seam 2.x'i kapsayan <a href="http://www.amazon.com/Seam-Framework-Experience-Evolution-JBoss/dp/0137129394/ref=pd_bbs_sr_5?ie=UTF8&amp;s=books&amp;qid=1224268151&amp;sr=8-5">yeni sürümü</a> yayınlanacak.</span><br />(4/5)<br /><p><br /></p><p><br /></p><hr /><p></p><br /><a href="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPetE5TUo6I/AAAAAAAAAZs/8mum2kwv43c/s1600-h/practical.gif"><img src="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPetE5TUo6I/AAAAAAAAAZs/8mum2kwv43c/s200/practical.gif" alt="" id="BLOGGER_PHOTO_ID_5257861389591290786" border="0" /></a><br />Apress yayınevinden çıkan diğer bir kitap "<a href="http://www.apress.com/book/view/1590598636">Practical JBoss Seam Projects</a>". Henüz bu kitabı okumaya zamanım olmadı fakat okuma listemde üst sıralarda. Okuyan arkadaşlar fikirlerini paylaşabilirlerse çok sevinirim.<br />(?/5)<br /><p><br /></p><p><br /></p><p><br /></p><hr /><p></p><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetuBU4CAI/AAAAAAAAAZ8/q5Qb_toS_qI/s1600-h/hibernateinaction.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetuBU4CAI/AAAAAAAAAZ8/q5Qb_toS_qI/s200/hibernateinaction.jpg" alt="" id="BLOGGER_PHOTO_ID_5257862096119924738" border="0" /></a><br />Seam'in ve Hibernate'in yaratıcısı olan Gavin King'in yazarlığını yaptığı "Java Persistence with Hibernate"'in son ünitesi Seam'e ayrılmış. Seam'in ortaya çıkış sürecini ve temel özelliklerini yaratıcısının kaleminden okumak isteyenler mutlaka göz atmalılar.<br />(5/5)<br /><p></p> - 2008-10-17T19:32:05+00:00 - - - Ahmet Yıldız: Geri Sayım Başladı - http://www.bugunlinux.com/?p=118 - <p></p> - 2008-10-16T21:50:18+00:00 - - - Fatih Arslan: Bardağın yarısı boş mu yoksu dolu mu? - http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/ - <p>Bur meşhur <a href="http://en.wikipedia.org/wiki/Is_the_glass_half_empty_or_half_full%3F">sorunun</a> bir çok cevabı var. Msn iletisinde şunları yazmıştı geçen bir arkadaşım:<br /> -<strong><br /> -To the optimist, the glass is half full.<br /> -To the pessimist, the glass is half empty.<br /> -To the engineer, the glass is twice as big as it needs to be.<br /> -</strong><br /> -Benim çok hoşuma gitmişti. Aklıma takılmış olacak ki web&#8217;de oradan oraya zıplarken bir yerde şu harika cümleyi gördüm:<br /> -<strong><br /> -The physicists say the glass is neither. It is completely full, half with water, the other half with air.</strong></p> -<p>Ardından bugün okulda arkadaşımı gördüm ve bunu söylemiştim. Sonra başardık konuşmaya, başkaları ne derdi acaba diye düşünüyorken kendi aramızda, ben de o arada atladım ve &#8220;<em>Filizof ne derdi ? </em>&#8221; diye sordum Biraz sessizlik oldu, düşünürken şunu deyiverdim:</p> -<p><strong>Hangi bardak ? </strong></p> -<p>Bu da böyle bir anımdı bugün. Bu bardağın yarısı boş mu dolu mu sorusu bu arada bilimsel olarak kullanılan bir metotmuş. Adı da <a href="http://en.wikipedia.org/wiki/Litmus_test_(politics)">Litmust Testi</a>. Psikoloji&#8217;de bir insanın en basitinden <strong>iyimser</strong> mi <strong>kötümser</strong> mi düşündüğünü belirtmek için yarıyormuş. Bu yöntem ile çok farklı düşünen insanları da görmek mümkün oluyor , örneğin yukarıdaki <strong>mühendis</strong> örneği gibi.</p> -<p>Bu testi farklı amaçlarla da kullanabiliyoruz, örneğin bir bardaki barmen-müşteri <a href="http://de.wikipedia.org/wiki/Wikipedia:Humorarchiv/Halb_voll_oder_halb_leer%3F">ilişikisi</a>. <strong>Barmen</strong> bardağı her zaman tam dolu, yarı dolu, çeyrek dolu,&#8230; şeklinde görüyor etrafı, fakat bardaki müşteriler için tam tersi, onlar tam boş, yarım boş, çeyrek boş,&#8230; şeklinde görüyorlar etraftaki bardakları. </p> - <p></p> - <hr noshade="noshade" /> - <small><p>Copyleft - Fatih Arslan - <a href="http://blog.arsln.org">Arslanlar Şehri</a>, 2008. | - <a href="http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/">Permalink</a> | - <a href="http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/#comments">Yorum(0)</a></p></small> - 2008-10-16T21:00:40+00:00 - - - Necdet Yücel: Akademik Bilişim 2009 - http://nyucel.blogspot.com/2008/10/akademik-biliim-2009.html - XI. Akademik Bilişim Konferansı bu yıl Şanlıurfa'da Harran Üniversitesinde <a href="http://ab.org.tr/">yapılacak</a>. Yakında Akgül Hocanın <em>aktif katılım çağrısı</em>nı alırsınız ama ben şimdiden haber vereyim dedim.<br /><br />Her yıl olduğu gibi bu yıl da Konferans düzenlenmeden önce ev sahibi üniversitede bir toplantı yapılacak; 31 Ekimde Harran'da olacağız. Nereye gideceğiniz konusunda fikriniz olsun diye fotoğraflar eklerim ;) - 2008-10-16T20:31:56+00:00 - - - LKD YK: Eylül Ayı Üye Bülteni Yayınlandı - http://gunluk.lkd.org.tr/yk/2008/10/16/eylul-ayi-uye-bulteni-yayinlandi/ - <p>Linux Kullanıcıları Derneği’nin yapmış olduğu çalışmaların konsantre bir şekilde anlatıldığı aylık bülteni bu kez Eylül ayı için dernek üyelerimizden Seyfi Genç hazırladı. Bülten tüm üyelerimizin e-posta adreslerine gönderildi.</p> -<p>Gönderim sırasında Temmuz ayında olduğu gibi ufak çaplı bir kaza da yaşadık, e-postalara Reply-To yerine yanlışlıkla BCC (gizli karbon kopya) satırı eklenmesi nedeniyle yönetim kurulu listesinin moderatörleri Alper ve Doruk&#8217;un posta kutularına bir anda 1000′e yakın e-posta doldu&#8230; Neyse en azından bu sefer liste arşivleri kurtuldu :) (züğürt tesellisi)</p> - 2008-10-16T20:02:32+00:00 - - - Hakan Uygun: Google Chrome, Özgür Yazılım ve Amerikan Ticaret Kanunları - http://www.hakanuygun.com/blog/?p=132 - <p><a href="http://www.webrazzi.com/2008/10/15/google-suriye%e2%80%99-de-chrome-kullanimini-engelledi/">webrazzi</a>&#8216;den okuduğum habere göre Google Chrome uygulamasını Suriye, İran ve Amerikan Ticaret Kanunu&#8217;na göre ambargolu bir çok ülkeden indirilmesine kapatmış. Gene aynı haber içerisinde Google&#8217;ın Adsense için her hangi bir yaptırım uygulamadığı söyleniyor. Yazıda ticari bir hizmetin kapatılmayıp, ücretsiz bir yazılımın kapatılması üzerinde duruluyor&#8230;</p> -<p>Bense başka bir noktaya takıldım. Özgür yazılım lisanslarının Ticaret Kanunları çerçevesinde nasıl değerlendirileceği.</p> -<p>Sonuç ürün üzerinde Amerikan Ticaret kanunları çerçevesinde bir ambargo söz konusu olabilir, sonuçta Google bir pazar olarak Amerika ve kanunlarla uğraşmak yerine zaten bir pazar olarak görmediği ülkeler için ambargoyu uygular. Kaynak kodlara ulaşılması, derlenmesi ve ilgili kanunların geçerli olmadığı başka ülkeler üzerinden tekrar yayınlanması ise engellenemez. Tam bu noktada düşündüğüm ise çeşitli kanunlarla özgür yazılım ürünü kaynak kodlarımızında yasaklanması söz konusu olabilir mi? Son durumunu bilmiyorum ama bir dönem Amerikan kanunları nedeniyle şifreleme algoritmaları açısından bir dolu sorun yaşanıyordu&#8230;</p> -<p>Bir de aklıma takılan acaba Amerika tarafından ambargolu ülkeler acaba bir fork yaparlar mı? <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p> -<p>Aslında, dünyanın bu kadar küçüldüğü, sınırların bu kadar belirsizleştiği bir ortamda bir şeylerin kanunlarla sınırlandırılmaya çalışılması konusunda sorulacak o kadar fazla soru ve tartışılacak konu var ki&#8230;</p> - 2008-10-16T18:06:04+00:00 + + Erol Soyöz: Mercurial + http://www.soyoz.com/gunce/mercurial + PHPMagazine'de, CVS, SVN v.b kaynak kod yönetim araçları yerine, daha gelişmiş ve basit olan Mercurial'in kullanımına teşvik etmek için bir yazı hazırlanmış. Okunabilir de, okunduktan sonra uygulanabilir de. + 2008-10-23T22:47:12+00:00 Nesimi Acarca: QTicari Beta-1 @@ -160,13 +100,243 @@ Projeye destek olmak i&ccedil;in :&nbsp; </strong></p> <a target="_blank" href="http://forums.nesimia.com/index.php?5">http://forums.nesimia.com/index.php?5</a> adresine tıklayın.<br /> <strong><br /> </strong></p><img src="http://feeds.feedburner.com/~r/nesimia-gezegen/~4/422423188" height="1" width="1" /> - 2008-10-16T08:21:21+00:00 + 2008-10-23T22:47:10+00:00 - - Bora Güngören: Yine güzel bir blog - http://blogs.portakalteknoloji.com/bora/blog/2008/10/16/201/ - <p>Bugünlerde sosyal ağlarda bir şeyler ararken (evet aranabiliyor) tematik blogu olanlar daha da çok dikkatimi çekiyor. Bu sefer de çok güzel bir <a href="http://pazarlamacigiremez.blogspot.com/">pazarlama blogu</a> dikkatimi çekti. </p> - 2008-10-16T00:09:00+00:00 + + Ali Erkan İMREK: Pardus'a katkı yapmak + http://armuting.blogspot.com/2008/10/pardusa-katk-yapmak.html + <div><a href="http://linuxfoooka.files.wordpress.com/2007/08/linux-penguin-we-are-free-and-legit-now-no-worry-150807.jpg"><img src="http://linuxfoooka.files.wordpress.com/2007/08/linux-penguin-we-are-free-and-legit-now-no-worry-150807.jpg" alt="" border="0" /></a>Pardus, 2007 sürümüyle beraber geniş kitlelere ulaşmayı başarabildi, ben 2008 sürümünün, 2007'den 2007.3'e kadar olan yükselen kalite ivmesini devam ettiremediğini düşünüyorum ama bu kullanıcı kitlesinin genişlemesini etkilemedi. Bunda mevcut kullanıcıların Pardus ile bir gönül bağı kurmuş olduğunu ve yeni kullanıcılar açısından da Ulusal Dağıtım fikrinin çekiciliğinin önemli rol oynadığını düşünüyorum. Bu kadar hızlı büyüyen bir toplulukta da projeye katkı yapmak isteyen her seviyeden kullanıcı olması beklenen bir durumdur.<br /></div><div><br />Kullanıcıların az bir kısmının Linux konusunda tecrübeli ve yetkin kişilerden oluştuğu büyük çoğunluğunda AWB (Ağır Windows Bağımlılığı) olan kullanıcılar olduğu forum ve e-posta listelerinden anlaşılıyor. Bu çoğunluğun belgelendirme, çeviri ve hata raporlama konusunda planlı bir şekilde bilinçlendirilmesi gerektiğini düşünüyorum. AWB'den dolayı bu durumdaki kullanıcıların pek çoğu Linux dağıtımlarını birilerinin bir yerlerde kendi halinde kodladığı kendisinin de sadece inidirp kurup kullanacağı bir sistem olarak görüyor. Katkı konusunu da program yazmak olarak anlıyor. Bu konuda wiki sayfalarında belgeler var isteyen gider okur denilebilir ancak ben wiki sayfalarını sadece ne aradığını ve nerede bulacağını bilen kişilerin okuduğunu düşünüyorum. Bu durumda Pardus ekibince kullanıcılara tek adres olarak gösterilen özgürlükiçin sitesinin "Katkı" konusunda yol gösterici, bilinçlendirici ve özendirici yeni bölümleri ve projeleri olması gerektiğini düşünüyorum. Özgürlükiçin bugüne kadar hep içeriden dışarıya bir bilgi akışını sağlama yönünde gelişti, en son "Beyin" projesiyle dışarıdan içeriye akışı sağlayan bir gelişme sağlandı. Artık bundan sonraki adımların özelde "Katkı" konusunda ve genelde dışarıdan içeriye yönelik olması gerekiyor.<br /><br />Bunları yazmama neden olan şey aslında ileri seviye bir kullanıcının aşağıdaki adreste gördüğüm pisi paketleri [1] , bu arkadaş Pardus'u kullanmış, kullanmakla kalmamış katkı da yapmış. Ama bu paketleri Pardus deposu yerine kişisel sayfasında yayınlamış. Acaba neden Pardus deposuna girmemiş, katkı için başvurmamış mı? başvurmak istemiş bilgi mi bulamamış? geri mi çevrilmiş? diğer dağıtımlar için yaptığı paketlere bakınca Pardus için de iyi bir katkıcı olabileceğini ama neden Pardus'un bu kişiyi kazanamadığını merak ettim. Daha korkunç bir soru acaba bu kişi gibi kendi halinde paketleme yapan kaç kişi var?<br /><br />Pardus'un bir contrib deposu var ancak bu depoya herkes paket gönderemiyor, bu konudaki teknik konuları bilmiyorum ama contrib deposunun en az temel depo kadar formalite taşıdığını ve test süecine tabi olduğunu sanıyorum. Ben resmi depolarda olmayan paketlerin bulunduğu (belki kullanıcıların kendi yaptığı programlar için) kullanımı tamamen kullanıcıların sorumluluğunda olacak testleri ve bakımı kullanıcılar tarafından yapılacak ama Pardus sunucularından hizmet verecek daha özgür bir depo hayali kuruyorum.<br /><br />Bu konuda zaten www.pardus-linux.org sitesi açtığı depo ile önemli bir adım atmıştı, ben bu depoların ve sitelerin ülkemizde ve Dünya'da daha da çoğalmasının Pardus'a her zaman fayda sağlayacağını düşünüyorum. Ama bu konularda öncülüğü Pardus ekibinin yapmasını da bekliyorum.<br /><br />Belki yazılacak daha çok şey vardır ama aklıma gelenleri hızlıca yazdım.<br /><br />[1] <a href="http://www.maccusfoto.nl/maxmenu/rpms.html">http://www.maccusfoto.nl/maxmenu/rpms.html</a><br /></div> + 2008-10-23T12:48:48+00:00 + + + Enver Altın: The death of the dollar? + http://enveraltin.com/blog/politics/2310080257.html + <p>From BBC Business, on his corner Prof. Ngaire Woods provides a good easy-read overview of the global economic status-quo and speculates on potential consequences of redistribution of economic power following the turmoil. <a href="http://news.bbc.co.uk/2/hi/business/7684397.stm">Definitely worth reading</a>. I don't have much to say, because I agree wholeheartedly.</p> + 2008-10-23T07:45:00+00:00 + + + Serkan Kaba: Türkçe yerel ile hatalı çalışan programlar + + Java&#8217;da daha önce pek çok kez karşılaştığım bir hatayı Python ile yazılmış olan Bazaar&#8217;da da yaşayınca buraya yazmak istedim. Java ve muhtemelen Python da büyük küçük harf çevrimlerinde aktif yerelin özelliklerini dikkate alıyor. Ancak bunun gerekmediği hatta istenmediği durumlar olabiliyor. Bunlara örnek olarak kod üreticiler verilebilir. Türkçe&#8217;deki I-&#62;ı ve i-&#62;İ çevrimi nedeniyle bazı programlar hatalı [...] + 2008-10-23T07:00:30+00:00 + + + Bora Güngören: Mac OS X'de GCC kurulumu + http://blogs.portakalteknoloji.com/bora/blog/2008/10/23/204/ + <p>2000-2001 dönemlerinde Apple'ın kendisi de derleyici olarak GCC kullanmaya başladığı için Mac OS X'de GCC kurmak oldukça kolay bir şey. Yapmanı gereken ilk şey <a href="http://connect.apple.com/">Apple Developer Connection</a> sitesine üye olmak. Burada geleneksel bir form dolduruyorsunuz. Apple'ın merak ettiği önemli bir şey herhangi bir üniversitede öğrenci durumunuz olup olmadığı. Arkasından geliştirici olarak ne yaptığınızı soran çok basit ve çok hoşuma giden bir anket hazırlamışlar. Programlama dili ve benzeri detaylara hiç girmemişler. Kimin için, hangi tür yazılımları hangi işletim sistemlerinde yazdığınızı öğrenmek onlara yetiyor. </p> +<p>Bir kez Apple Developer Connection (ADC) üyesi olunca, çok çeşitli araçları indirebiliyorsunuz. Bunlar arasında Mac OS X çekirdeği için hata ayıklayıcı gibi şeylerden türlü türlü SDK'lara kadar çok farklı paketler var. Elbette benim esas ilgimi çeken <a href="http://developer.apple.com/tools/xcode/">XCode</a> aracı. Yalnız dikkat edilecek bir şey var. Bu araç ekleri vs ile <strong>yaklaşık 1.2 GB boyutundaki bir paket</strong> ile geliyor. Yani tek başına GCC kurmak isteseniz dahi, önce bütün araç paketini çekmeniz sonra da kurulum sırasında sadece GCC'yi çekmeniz gerekiyor. </p> +<p>Uzun bir indirme ve bir kaç tıklama sonrasında XCode'u kurunca /usr/bin/gcc adresinde GCC kurulmuş oluyor. </p> + 2008-10-23T03:35:00+00:00 + + + Enver Altın: Makine Mühendisleri Odası İstanbul Şubesi'nde Özgür Yazılım sohbeti + http://enveraltin.com/blog/events/2210080418.html + <p><a href="http://www.mmoistanbul.org/site/Scripts/prodView.asp?idproduct=2484">Haberler</a> <a href="http://www.fazlamesai.net/?a=article&sid=5107">her yerde</a>, yeni LKD Seminer Çalışma Grubu ekibi azmetmiş, kendilerine teşekkür ediyorum.</p> +<p>Bugün, 22 Ekim saat 19:00'da Makine Mühendisleri Odası İstanbul Şubesi'nde Özgür Yazılım konusunda biraz sohbet edeceğiz. Katılım herkese açık, <a href="http://www.mmoistanbul.org/site/Scripts/prodView.asp?idproduct=2484">adres ve kayıt için gerekli bilgiler</a> MMOIstanbul.org'da.</p> + 2008-10-22T08:18:00+00:00 + + + Alper Kanat: Subversion, Bazaar ve GIT Üzerine.. + http://raptiye.org/blog/2008/10/22/subversion-bazaar-ve-git-uzerine/ + <img width="128" height="128" src="http://raptiye.org/resimler/rocket.png" alt="rocket" />raptiye'yi <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> &uuml;zerinde sunduğumu daha &ouml;nceki yazılarımdan birinde s&ouml;ylemiştim. Işık &Uuml;niversitesi Kul&uuml;pler Sunucusu'nda, <a title="parkyeri hakkında bilgi almak i&ccedil;in tıklayın.." target="_blank" href="http://www.parkyeri.com">Parkyeri</a>'nde, <a title="arch linux t&uuml;rkiye hakkında bilgi almak i&ccedil;in tıklayın.." target="_blank" href="http://www.archlinuxtr.org/">Arch Linux T&uuml;rkiye</a> projelerinde ve kendi yaptığım işlerin bir kısmında <a href="http://subversion.tigris.org/" target="_blank" title="subversion hakkında bilgi almak i&ccedil;in tıklayın..">Subversion</a> tercih ediliyor. Bunun dışında bir &ccedil;ok s&uuml;r&uuml;m y&ouml;netimi sistemi var elbet ve bunlardan en &ouml;nemlilerini (<a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a>, <a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a>) araştırdıktan sonra <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> kullanmaya karar verdim. Bu yazıda bu konuyla ilgili dikkatimi &ccedil;eken ve &ouml;nemli bulduğum şeyleri paylaşmaya &ccedil;alışacağım. Bir &ccedil;ok insanın s&uuml;r&uuml;m y&ouml;netimine kavram olarak yabancı olduklarını d&uuml;ş&uuml;nd&uuml;ğ&uuml;mden &ccedil;ok kısa bir şekilde onu da a&ccedil;ıklamak istiyorum.<br /> +<br /><br /> +<br /><span><strong>S&uuml;r&uuml;m Y&ouml;netimi Sistemleri Nedir?</strong></span><br /> +<br /><br /> +<br />İngilizce'de <strong>Version Control System</strong> (<em>VCS</em>) olarak ge&ccedil;en, dilimizde iyi anlatabilmek i&ccedil;in yukarıdaki gibi uzun olan <em>s&uuml;r&uuml;m y&ouml;netimi</em>, bazı yerlerde <em>revizyon y&ouml;netimi</em> gibi de kullanılıyor. S&uuml;r&uuml;m Y&ouml;netimi'ni, yazılımın aşama aşama geliştirildiğini d&uuml;ş&uuml;n&uuml;rsek, bu aşamaları kayıt altında tutan, istenildiğinde geri d&ouml;n&uuml;lmesine olanak tanıyan, aşamalar arasında neler olduğunu kolaylıkla g&ouml;sterebilen yazılımlar olarak &ouml;zetleyebiliriz. Geliştirici'nin hayatını kolaylaştırdığı kesin! Bu yazılımlardan neler beklendiğini maddeler halinde yazarsam sanırım daha iyi anlaşılacaktır:<br /> +<br /><ul> +<br /> <li>Kodda yapılan t&uuml;m değişimler birer revizyondur.</li> +<br /> <li>Revizyonlar arasında değişen dosyalar, dosyalardaki değişiklikler (gerekirse yama olarak) kolayca g&ouml;r&uuml;nt&uuml;lenebilmelidir.</li> +<br /> <li>Herhangi bir revizyondan sonra işler yanlış gittiyse, o revizyona kadar olan kısım geri alınıp hi&ccedil; bir şey olmamış gibi devam edilebilir.</li> +<br /> <li>Herhangi bir dosyada yapılan değişiklikler kodun geri kalanından bağımsız olarak geri alınabilmelidir.</li> +<br /> <li>Birlikte &ccedil;alışılan projelerde, diğerlerinin yaptığı değişiklikleri alabiliyor olmalı ve bunu yaparken de olabildiğince az (m&uuml;mk&uuml;nse sıfır) &ccedil;akışmaya izin vermelidir.</li> +<br /> <li>Ek maliyetler getirmemeli, hızlı ve kolay olmalıdır. M&uuml;mk&uuml;nse her platformda &ccedil;alışmalıdır.</li> +<br /></ul> +<br />T&uuml;m bunlar bir arada d&uuml;ş&uuml;n&uuml;ld&uuml;ğ&uuml;nde geliştiricinin işlerini kolaylaştıran ve hızlandıran etmenler.. Bu ihtiya&ccedil;lara cevap verebilmek adına kullanılabilir durumda bir s&uuml;r&uuml; s&uuml;r&uuml;m y&ouml;netimi yapan yazılım var. En meşhuru olan <a title="cvs hakkında bilgi almak i&ccedil;in tıklayın.." target="_blank" href="http://www.nongnu.org/cvs/">CVS</a>'in, doğal gelişim s&uuml;reci i&ccedil;inde yetersiz gelmeye başladığı ortaya &ccedil;ıkınca ortaya <a href="http://subversion.tigris.org/" target="_blank" title="subversion hakkında bilgi almak i&ccedil;in tıklayın..">Subversion</a> &ccedil;ıkmış. Şu anda bir &ccedil;ok ihtiyacı g&ouml;r&uuml;yor gibi g&ouml;r&uuml;nse de ileride yetersiz kalacağını g&ouml;renler <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>, <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> ve <a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a> gibi alternatifler geliştirmişler. Gelin; bu sistemlerin yukarıdaki maddelere ek olarak getirdiklerine bakalım:<br /> +<br /><ul> +<br /> <li>S&uuml;r&uuml;m y&ouml;netimi i&ccedil;in &ccedil;evrimi&ccedil;i olmak gerekmemeli! Teslimat (commit), Birleştirme (merge), tarih&ccedil;e gibi işlemler i&ccedil;in herhangi bir sunucuya bağlanmak gerekmemeli.. Kısaca merkezi sisteme hayır!</li> +<br /> <li>Kod tabanı dağıtık bir yapıda olabilir ve insanlar birbirlerinden değişik kısımları ya da kodun tamamını alabilirler.</li> +<br /> <li>Her kopya, s&uuml;r&uuml;m kontrol&uuml;ne ait tarih&ccedil;e vb. kritik &ouml;nem taşıyan bileşenleri barındırır.</li> +<br /> <li>Her kopya aslında yeni bir daldır (branch)!</li> +<br /> <li>Birleştirme işlemi acı vermeyen, s&uuml;rekli yaptığımız; hatta zevk veren bir işlem olmalıdır!</li> +<br /> <li>&Ccedil;evrimdışı &ccedil;alışma = hız!</li> +<br /> <li>B&uuml;y&uuml;k şirketlerde sık&ccedil;a rastlanan &quot;kod &ccedil;alışana ve t&uuml;m testleri ge&ccedil;ene kadar teslim edemezsin!&quot; mantığı y&uuml;z&uuml;nden t&uuml;m değişikliklerin tek ve kocaman bir yama olarak g&ouml;nderilmesi sorunlara yol a&ccedil;abiliyor. Bunun yerine yerel ve k&uuml;&ccedil;&uuml;k k&uuml;&ccedil;&uuml;k teslimatlar yapabilir; daha sonra değişiklikler ana sunucuya teslim edilebilir hale geldiğinde her değişiklik birer revizyon olacak şekilde ana sunucuda yerini alır. B&ouml;ylece yapılan b&uuml;y&uuml;k bir değişiklikte bile atomik değişiklikler geri alınabilir ve rahatlıkla d&uuml;zeltilebilir.</li> +<br /></ul> +<br /><span><strong>Peki Alternatifler Neler?</strong></span><br /> +<br /><br /> +<br />Bunları ve daha fazlasını yapabilen uygulamaların bulunduğu k&uuml;meye <strong>Dağıtık S&uuml;r&uuml;m Y&ouml;netimi Sistemleri</strong> (<em>Distributed Version Control Systems</em>) deniyor. Linus Torvalds, Linux &ccedil;ekirdeğinin geliştirilmesinde kullanılan BitKeeper ile ilgili sorunlar yaşanmaya başlanınca bu konuya kendi &ccedil;&ouml;z&uuml;m&uuml;n&uuml; getirip <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> adında bir yazılım yazmış. Dağıtık S&uuml;r&uuml;m Y&ouml;netimi ve <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> hakkındaki d&uuml;ş&uuml;ncelerini paylaştığı şu video'nun epey yararlı olduğunu s&ouml;yleyebilirim.<br /> +<br /><br /> +<br /><a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a>'ı <a title="arch linux t&uuml;rkiye hakkında bilgi almak i&ccedil;in tıklayın.." target="_blank" href="http://www.archlinuxtr.org/">Arch Linux T&uuml;rkiye</a> projelerini y&ouml;netmek i&ccedil;in <a href="http://eventualis.org/" target="_blank" title="samed'in kişisel sitesi i&ccedil;in tıklayın..">Samed BEYRİBEY</a>'in &ouml;nerisiyle denemeye başladık. Başlarda fazla araştırmadığım i&ccedil;in olduk&ccedil;a yabancı gelmiş ve ısınamamıştım. Tıpkı <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> gibi &quot;commit&quot;, &quot;checkout&quot; vb. alıştığımız anahtar s&ouml;zc&uuml;kler yerine başka s&ouml;zc&uuml;kler tercih ediliyordu ve bu da kafa karıştırıcı oluyordu. <a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a>, sırf bu y&uuml;zden dumur olan insanlara kolaylık olması amacıyla bu s&ouml;zc&uuml;kleri i&ccedil;inde bulunduruyor yine de.. Bir s&uuml;re denedikten sonra bir hayli karışık geldiğinde kullanımından vazge&ccedil;tik ve b&ouml;ylece <a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a> defteri kapanmış oldu.<br /> +<br /><br /> +<br /><a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a>, şu anda bir hayli reva&ccedil;ta olan bir yazılım.. Bir &ccedil;ok &ouml;zg&uuml;r yazılım projesi tarafından tercih ediliyor ve sayıları giderek artıyor. Benim <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a>'i tercih etmememdeki en b&uuml;y&uuml;k sebepler ş&ouml;yleydi:<br /> +<br /><ul> +<br /> <li><a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> i&ccedil;erisindeki kodu sunmak i&ccedil;in bir s&uuml;r&uuml; ayarla uğraşmak istemedim.</li> +<br /> <li><a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a>'in getirdiği terminoloji &ouml;ğrenmesi zaman alacak gibiydi.</li> +<br /> <li>D&ouml;k&uuml;mantasyonu <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> kadar a&ccedil;ık ve rahat okunabilir değil.</li> +<br /> <li>Herhangi bir web servisi ile alakası yok.. (<a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>'ın LaunchPad desteği gibi..)</li> +<br /> <li>Boş dizinlerin s&uuml;r&uuml;m y&ouml;netimi i&ccedil;inde bulunamaması ve i&ccedil;ine boş birer dosya koyma zorunluluğu hoşuma gitmedi.</li> +<br /> <li>Platform bağımsız değil. Windows'da &ccedil;alışmıyor. (ya da desteği hen&uuml;z yetersiz)</li> +<br /></ul> +<br />&Ouml;te yandan araştırmamı daha &ccedil;ok <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> ve <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> <a title="yazıların bir listesi i&ccedil;in tıklayın.." target="_blank" href="http://www.google.com.tr/search?q=bazaar+vs+git&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a">karşılaştırması yapan yazılar</a> &uuml;zerinde yoğunlaştırmıştım. <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>'ın hoşuma giden &ouml;zellikleri ş&ouml;yle:<br /> +<br /><ul> +<br /> <li>Kodunuzu sunmak i&ccedil;in herhangi bir sunucu kurmanıza gerek yok. Zaten varolanlar ile birlikte zaten bir hayli se&ccedil;eneğiniz var: +<br /> <ul> +<br /> <li>bzr://,</li> +<br /> <li>sftp:// (SSH),</li> +<br /> <li>ftp://, http://&nbsp;(webdav),</li> +<br /> <li>file:// (yerel dosya sistemi)</li> +<br /> </ul> +<br /> </li> +<br /> <li>D&ouml;k&uuml;mantasyonu (&ouml;zellikle anlatımı)&nbsp;ve sitesi olduk&ccedil;a etkileyici..</li> +<br /> <li>LaunchPad desteği sayesinde tek bir komutla servisle etkileşim halindesiniz.</li> +<br /> <li>Boş dizinler de (doğal olarak)&nbsp;s&uuml;r&uuml;m y&ouml;netimine dahiller.</li> +<br /> <li>Linux, Mac OS X ve Windows'da sorunsuz olarak &ccedil;alışabiliyor.</li> +<br /></ul> +<br /><a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>'la ilgili beni en &ccedil;ok etkileyen şey kodumu sunmak i&ccedil;in &ccedil;ok fazla uğraşmama gerek olmamasıydı. Varolan kodumu s&uuml;r&uuml;m y&ouml;netimi altındayken kullandığım ağ sunucusu ile sunmam yeterli! &Ouml;rneğin raptiye'nin kod tabanını nginx ile sunuyorum (<a href="http://code.raptiye.org" target="_blank">http://code.raptiye.org</a>) ve <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> kullanan bir kişi http:// protokol&uuml; &uuml;zerinden kodu dallandırabiliyor!<br /> +<br /><br /> +<br />Bir &ccedil;ok kişi <a href="http://subversion.tigris.org/" target="_blank" title="subversion hakkında bilgi almak i&ccedil;in tıklayın..">Subversion</a> kullanımına; dolayısıyla da merkezi sisteme alışık olduğundan <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>'ı bu şekilde yapılandırıp yarı-dağıtık bir model ile kullanabilirsiniz. Uzaktaki kodu yerelinize indirip (dallandırıp) t&uuml;m değişikliklerinizi &ccedil;evrimdışı olarak kendi bilgisayarınızda yapabilir, dilediğinizce farklara bakıp, tarih&ccedil;eyle ilgili işlem yapabilir, yerel teslimatlar yapabilirsiniz. İşiniz bittiğindeyse kodun son halini sunucuya g&ouml;nderebilirsiniz. raptiye'de tek kişi &ccedil;alıştığım i&ccedil;in şu anda bu modeli sık&ccedil;a uyguluyorum. Biraz da kullanımdan &ouml;rnek verirsem daha iyi olacak sanırım..<br /> +<br /><br /> +<br />&Ouml;ncelikle kodu kendi yerelimde dallandırıyorum:<br /> +<br /><blockquote> +<br /><div><br /> +<br />bzr branch http://code.raptiye.org/raptiye/main/ raptiye</div> +<br /></blockquote> <br /> +<br />Daha sonra bir takım değişiklikler yapıp yaptıklarımı g&ouml;zden ge&ccedil;irmek i&ccedil;in şu komutu veriyorum:<br /> +<br /><br /> +<br /><blockquote> +<br /><div>bzr diff|vi -</div> +<br /></blockquote> <br /> +<br /><strong>bzr diff</strong> komutu yaptıklarımın son revizyon ile farkını g&ouml;sterirken &quot;<strong>|vi -</strong>&quot; komutu ise &ccedil;ıktıyı VI adlı edit&ouml;re y&ouml;nlendirir. Bu şekilde yaptıklarımı renkli ve daha okunabilir olarak izleyebiliyorum.<br /> +<br /><br /> +<br />Yaptıklarımdan memnun kaldım ve teslim etmek istiyorum:<br /> +<br /><br /> +<br /><blockquote> +<br /><div>bzr ci</div> +<br /></blockquote> <br /> +<br />ci komutu commit komutunun kısaltması bu arada.. Bu komut sayesinde orjinal kodun kendi yerelimdeki dalında ilk teslimatımı yapmış oldum. Bu değişiklikleri ana sunucuya atmak istersem:<br /> +<br /><br /> +<br /><blockquote> +<br /><div>bzr push</div> +<br /></blockquote> <br /> +<br />komutunu kullanmalıyım. Bu komutu ilk kez kullanıyorsanız kodun y&uuml;kleneceği yeri de belirtmelisiniz:<br /> +<br /><blockquote> +<br /><div><br /> +<br />bzr push sftp://user@domain.com/home/code/raptiye/main/</div> +<br /></blockquote> <br /> +<br />Bu noktada &ouml;nemli bir konuya değinmekte de fayda var. <strong>Performans kaynaklı sebeplerden dolayı bzr push komutu uzaktaki sunucunun yalnızca tarih&ccedil;esini g&uuml;nceller ancak kod &uuml;zerinde gerekli olan değişiklikleri yapmaz.</strong> Bu değişiklikleri yapmak i&ccedil;in sunucu &uuml;zerindeki kod tabanında <em>bzr up</em> komutunu &ccedil;ağırmalı ya da bunu sizin i&ccedil;in yapan bir eklentiyi indirip yerelinize kurmalısınız.<br /> +<br /><br /> +<br />Proje &uuml;zerinde birden fazla kişi &ccedil;alıştığında sunucu &uuml;zerinde her geliştirici i&ccedil;in bir hesap a&ccedil;mak istemeyebilirsiniz. Bu durumda ağ sunucusunda http protokol&uuml; &uuml;zerinden belli kişilere erişim izinleri tanımlayarak teslimat yaptırabilirsiniz. <a href="http://nginx.net/" target="_blank" title="nginx hakkında detaylı bilgi almak i&ccedil;in tıklayın..">nginx</a> &uuml;zerinde webdav yerine <a href="http://www.python.org/dev/peps/pep-0333/" target="_blank" title="python pep'lerinden wsgi ile ilgili bilgi almak i&ccedil;in tıklayın..">wsgi</a> ayağı kullanılıyor ancak wsgi, <a href="http://nginx.net/" target="_blank" title="nginx hakkında detaylı bilgi almak i&ccedil;in tıklayın..">nginx</a>'in geliştirilme hızına yetişemediğinden ben &ccedil;alıştırmayı beceremedim. (<a href="http://nginx.net/" target="_blank" title="nginx hakkında detaylı bilgi almak i&ccedil;in tıklayın..">nginx</a>'i, <a href="http://www.python.org/dev/peps/pep-0333/" target="_blank" title="python pep'lerinden wsgi ile ilgili bilgi almak i&ccedil;in tıklayın..">wsgi</a> desteğiyle derlemekten bahsediyorum -- wsgi tarafında yamalar var ama onlar bile eski..)<br /> +<br /><br /> +<br />Bundan sonraki projelerde <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> benim s&uuml;r&uuml;m y&ouml;netimi i&ccedil;in tercih etmeye devam ettiğim yazılım olacak. Eminim benimkini kolaylaştırdığı gibi sizlerin de hayatını kolaylaştıracaktır.<br /><div class="feedflare"> +<a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=B4IIM"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=B4IIM" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=E2cCm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=E2cCm" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=6GMNm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=6GMNm" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=zx6AM"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=zx6AM" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=b3DRm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=b3DRm" border="0" /></a> +</div> + 2008-10-22T01:12:45+00:00 + + + Özgürlükiçin.com: Test Takımı Sizi Çağırıyor! + http://ozgurlukicin.com/haber/test-takimi-sizi-cgriyor/ + <p><img src="http://www.ozgurlukicin.com/media/upload/image/pardus-tescil.png" border="0" alt="Pardus" align="left" />Özgür yazılım süreçlerinde kullanıcıların katkı verebileceği birçok alan bulunmakta. Bu alanlar doğrudan kod yazmak ya da bileşen geliştirmek olabileceği gibi kod yazmayı bilmeyenlerin de katılabileceği pek çok işi de içeriyor. Çeviri, grafik desteği, <a href="http://hata.pardus.org.tr/">hata bildirimi</a>, belgelendirme çalışmalarının yanı sıra hem kendinizi geliştirebileceğiniz hem de Pardus'a katkı verebileceğiniz önemli bir alan daha var: Test süreçleri.<br /> <br /> Test süreçlerinde görev almak için yüksek bir bilgi gereksinime gerek yok. Bununla birlikte test süreçleri, kullanılan yazılımları daha iyi öğrenmenizi, işlevlerinden haberdar olmanızı ve bu sayede bilginizin artmasına da yardımcı olur. Test süreçlerine katılmak, aynı zamanda özgür yazılım dünyasında geliştirme süreçlerinin nasıl işlediğini görebilmek ve ilerde bir Pardus geliştiricisi olmak için de iyi bir başlangıç noktası oluşturur.<br /> <br /> Pardus Projesi'nde de tüm özgür yazılım projelerinde olduğu gibi test süreçleri son derece önemseniyor. Özgür yazılım bileşenleri her ne kadar çok sayıda geliştirici tarafından incelense de hatalar içermesi ya da bazı donanımlarla uyumlu çalışmaması olasılığı kaçınılmazdır. Pardus Geliştiricisi <strong>Serbülent Ünsal</strong>'ın liderliğini yaptığı Pardus Test Takımı ise gerek sürüm öncesi gerekse sürüm sonrası testlerle bu hataların en aza indirilmesini ve Pardus kullanıcılarının daha iyi bir bilgisayar deneyimi yaşamasını amaçlıyor.<br /> <br /> Pardus Test Takımı, test süreçlerini iki aşamada yürütüyor. Bunlardan ilki sürüm testleri. Yeni Pardus sürümleri çıkmadan önce test takımı ile paylaşılan Pardus Test ve Geliştirici Sürümleri, Test Takımı tarafından o sürüm için hazırlanan test kılavuzlarının yönlendirmesi ile test ediliyor Bu testlerin sonunda ortaya çıkacak muhtemel sorunlar Test Takımı üyeleri tarafından test e-posta listesine bildirilir ve bu bildirimler ışığında sorunların çözümü sağlanarak daha kararlı ve daha fazla donanımla uyumlu Pardus sürümlerinin kullanıcılara buluşması sağlanılır.<br /> <br /> Test Takımı'nın işi sadece sürüm öncesi testleri ile sınırlı değildir. Test Takımı, sürümlerin çıkmasını takip eden süreçte yapılan güncellemeleri de test ediyor. Bu testler sayesinde Pardus kullanıcılarının kullandığı kararlı depolara güncellemeler girmeden önce testlerinin yapılması ve güncellemelerin bir soruna yol açması durumunda bu sorunların tespit edilmesi sağlanıyor. Güncellemeler önemlerine ve sistemin kararlılığına olan etkilerine göre gruplara ayrılmış olup, bazı paketlerin güncellemeleri çok detaylı bazı paketlerin güncellemeleri ise daha az detaylı olarak test edilmektedir.<br /> <br /> Haberimizin başında da belirttiğimiz gibi, Test Takımı'na katılmak için yüksek bir bilgi birikimine ve donanım ihtiyacına gereksiniminiz yok. Bilgisayarınızda oluşturacağınız sanal makinelerle ya da test süreçlerine tahsis edeceğiniz bir bilgisayar ile test takımına katılmanız mümkün. Bunun için başlangı düzeyinde Pardus kullanmayı bilmeniz yeterli.<br /> <br /> Biz de Özgürlükİçin olarak bundan sonra Test Takımı'na verdiğimiz desteği daha da artırarak, test sürecine mümkün olduğunca daha fazla katkıcımızın dâhil olmasını amaçlıyoruz. Eğer siz de Pardus'un oluşumuna katkı vermek istiyor ama nereden başlayacağınızı bilmiyorsanız, hemen <a href="http://cekirdek.pardus.org.tr/~serbulent/ptg_bilgi.ods">bu adreste</a> yer alan formu doldurun ve <em><strong>psts _at_ pardus.org.tr </strong></em>adresine yollayarak gün geçtikçe büyüyen ve Pardus için çok önemli bir süreci yürüten Test Takımı'na katılın. Özgürlükİçin Forumlarında da test süreçleri ile ilgili fikirlerinizi <a href="http://www.ozgurlukicin.com/forum/pardus-2008-test-takimi/">paylaşabilirsiniz</a>.<br /> <br /> Özgürlük için... Pardus'u Test edin!</p> + 2008-10-21T14:27:00+00:00 + + + Hakan Uygun: Ekonomik Krize Çözüm : Özgür Yazılım + http://www.hakanuygun.com/blog/?p=138 + <p>Hepimizin malumu ekonomik kriz kapıda. Şirketler kemer sıkma politikalarına başladılar. Bir sürü blogda krizin olası etkileri ve bunlarla nasıl baş edilir yazısı yayınlanıyor.</p> +<p><a href="http://www.techcrunch.com">TechCrunch</a> iki haftadır web 2.0 şirketlerinin durumları ve aldıkları önlemler üzerine yazılar yayınlıyor. Aynı şekilde <a href="http://www.webrazzi.com/2008/10/20/ekonomik-kriz-ortaminin-internet-sektorune-etkisi/">webrazzi</a>&#8216;de krizin genelde internet sektörü özelde ise Türkiye internet sektörü üzerine etkisini incelemiş&#8230;</p> +<p>Krizle baş etme konusunda en ilginç yaklaşımlardan birini startupların piri <a href="http://www.paulgraham.com/badeconomy.html">Paul Graham</a> sunuyor :&#8221;<span>If nuclear winter really is here, it may be safer to be a cockroach - Eğer nükleer kış geldiyse, en güvenlisi hamam böceği olmaktır&#8221;. </span>Yeni bir iş başlatmak ( startup ) için en uygun zamanın kötü ekonomiler olduğunu söylediği makalesinde küçük ve masrafları az olan bir işletmenin kötü ekonomilerde hayatta kalma şansının diğerlerinden daha fazla olduğunu ifade ediyor.</p> +<p>Kısaca herkesin söylediği : Maliyetlerinizi ne kadar düşürürseniz nakit problemleri ile o kadar az uğraşırsınız, dolayısı ile kriz süresince yaşarsınız.</p> +<p>İşte tamda bu noktada özgür yazılım işletmelere büyük olanaklar sunmakta. Sahipli yazılımların binlerce dolara mal olduğu bir ortamda bilişim ihtiyaçlarını özgür yazılım çözümleri ile giderip, bir yandan maliyetleri düşürürken bir yanda da teknolojik olarak rakiplerin önüne geçilebilir.</p> +<p>Bu konuda özgür yazılım avantajlarını anlatan örneğin şu <a href="http://www.cio.com/article/452170/Five_Cheap_or_Free_Software_Programs_You_Can_Afford_During_a_Financial_Crisis">makaleye</a> ya da <a href="http://blogs.sun.com/arungupta/entry/relevance_of_open_source_during">şu blog</a>&#8216;a bakılabilir. Ayrıca özgür yazılım alternatifleri için <a href="http://www.osalt.com/">bu sayfaya</a>, Türkiye&#8217;de geliştirilen özgür yazılımlar için ise <a href="http://linux.org.tr/yerliyazilimlar.html">bu sayfaya</a> bakılabilir.</p> +<p>Umarım bu krizi kazasız belasız atlatmanın ötesine geçip daha da güçlenerek çıkarız.</p> + 2008-10-20T22:38:20+00:00 + + + Hakan Uygun: Internet, Radyo ve Diğer Şeyler + http://www.hakanuygun.com/blog/?p=133 + <p>Bir süredir, alışkın olduğum, daimi internet bağlantılarından uzak yaşamak durumunda kalıyorum. Müşteri ofislerinde, toplantılarda, şehir içinde ortalık da dolaşırken internet erişimi ciddi bir problem oluyor. Uzun bir zamandır neredeyse daimi internet erişimi olan biri olarak hemen tüm iletişim ihtiyacını internet ve e-posta ile gerçekleştirirken birden bire uzak kalınca bocaladım. Bir dolu şey aksamaya başladı.</p> +<p>Çözüm olarak mobil internet erişimlerini düşünmeye başladım. Karşıma çıkan bir kaç alternatif arasından <a href="http://www.nokia.com.tr/A41175900">Nokia E71</a>&#8216;i tercih ettim. Artık e-posta ve internet erişimi ( biraz pahalıya gelse de <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /> ) elimin altında.</p> +<p>Bu acil iletişim problemini çözünce başka bir sorun ile karşı karşıya kaldım. Taşınabilir bilgisayarımda hiç mp3 yok, çünkü <a href="http://www.lastfm.com.tr/">last.fm</a> dinliyordum. Diğer şeylerle birlikte internet kopunca last.fm&#8217;i de kaybettik <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /> Çözüm gene E71 oldu. Fakat last.fm&#8217;i hala çok arıyorum. Çalan parçadan hoşlanmazsanız bu şarkıyı geç diyemiyorsunuz, en fazla yapabileceğiniz radyo kanalını değiştirmek, ki bu halde bile çoğu zaman hoşlanmadığınız başka parçalara denk geliyorsunuz <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p> +<p>Sözün kısası &#8220;<a href="http://kampanya.org.tr/internetim">İnternet Yaşamdır</a>&#8221; diyorum&#8230;</p> + 2008-10-20T13:35:01+00:00 + + + Serkan Altuntaş: Samsung ML-1610 Mono Laser Printer + http://serkan.gen.tr/aug/181 + Babam acilen bir lazer yazıcıya ihtiyaç duyunca bugün aşırı değerli dolara rağmen Samsung ML-1610 Mono Laser Printer aldık. Hatta o kadar acilen lazımdı ki şehirdeki Bimeks ve iki Teknosa&#8217;da bu modelden kutusu açılmamış tek bir ürün bile kalmadığından benim hiç yapmayacağım bir şeyi yapıp teşhir ürününü aldık. Gerçi karlı da çıktık. Normalde kutuyla gelen %60 [...] + 2008-10-19T20:36:35+00:00 + + + Necati Demir: Ülkemden Şahit Manzaraları - I + http://blog.demir.web.tr/2008/10/lkemden-ahit-manzaralar-i.html + Dikkat: Gerçek Bir Olaydır!<br /><br /><br />40 yaşlarında bir adam, 1 yaşını henüz doldurmuş çocuğu için dışarı süt almaya çıkmıştır. Mahallede bir bağrışma duyar, yaklaşır. Bir kavga gürültü vardır, olay biterken jandarma sorar: "şahit misin?". "Evet" cevabını veren adam o akşam evine dönemez. O akşam nezarethanede kalır, ertesi gün cezaevine gönderilir. Anlamamıştır, şahit olmaya gelmişti sadece. 45 gün sonra duruşma var derler, 45 gün cezaevinde kalmak zorundadır. 45 gün sonra da heyecan içinde çıkacağını düşünmektedir, ne de olsa sadece şahit olmaya gelmişti. Ve mahkeme günü gelip çatmıştır, çıkıp çocuklarını görecektir artık. Zaten, cezaevindeki görüşlerde de karısına, "çocuklara dikkat et" deyip durmuştu, özlemişti anlaşılan. Ama, o gün hakim mahkemeyi 1 ay erteler. Özlemle sarılma umutları bir anda sönmüştür Sebepsiz yere 1 ay daha 4 duvar arasında yaşamak zorunda kalacaktır. + 2008-10-19T16:44:00+00:00 + + + Enver Altın: A brave new world + http://enveraltin.com/blog/1910080354.html + <p>End of an era marks the beginning of another one. With enormous sculpted success standing right behind me, I've recently quit <a href="http://www.cellenity.com/">Cellenity</a> to <a href="http://www.construia.com/">explore</a> what else the future has to offer.</p> +<p>On the way back home I stumbled upon the tail of this guy:</p> +<p align="center"><img src="http://enveraltin.com/img/kayserili.jpg" /></p> +<p>I spent the time and fuel that I'd normally be wasting around rush-hours Istanbul traffic on shows like Cebit Eurasia and Autoshow. Quick sum: Cebit is incrementally better every year, but Autoshow was spectacular. I've had the privilege to peek inside the Megane Coupe Concept, I shook hands with a member of the team who designed Sakarya University's 100% solar-cell racing car. Although fun, the rest was usual: short skirts, leg ladies, inefficient internal combustion engines, ugly car designs, little-to-no steps forward in evolution of transportation. Hybrids and electric vehicles receiving more attention was encouraging.</p> +<p>What comes next, I'll be blogging.</p> + 2008-10-19T07:54:00+00:00 + + + Murat Hazer: JBoss Seam kitapları .... + http://mhazer.blogspot.com/2008/10/jboss-seam-kitaplar.html + Bir önceki yazımda JBoss Seam'in klasik Java Enterprise Development (JEE)'a kazandırdığı çeviklikten, programlama modeline, metodolojisine getirdiği <a href="http://solutionsfit.com/blog/2008/09/29/seam-and-web-beans-not-just-evolutionary-revolutionary/">devrim</a> niteliğindeki özelliklerinden bahsetmeye çalıştım. Yeni bir teknoloji öğrenmenin en iyi yolunun o konu hakkında yazılmış kaliteli kitap(lar)ı okumak olduğunu düşünenlerdenim. Bu yazımda da Seam hakkında yazılmış kitapları ve bu kitaplar hakkındaki düşüncelerimi paylaşmaya çalışacağım.<br /><br /><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPeoZaWnNaI/AAAAAAAAAZU/dAIV-io6JuA/s1600-h/seaminaction.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPeoZaWnNaI/AAAAAAAAAZU/dAIV-io6JuA/s200/seaminaction.jpg" alt="" id="BLOGGER_PHOTO_ID_5257856244502705570" border="0" /></a>"<a href="http://www.manning.com/dallen/">Seam in Action</a>" Seam'i en kapsamlı şekilde anlatan, okunması rahat ve bol örnekleri olan bir kitap. Manning yayınevinin diğer kitapları gibi bu kitap da oldukça kaliteli ve çok iyi edit edilmiş. Bu kitabı <a href="http://www.manning.com/about/meap.html">Early Access</a> seviyesinden beri takip ediyorum ve her sayfasından yeni bir şeyler öğrendim diyebilirim. Ayrıca referans kitabı olarak kullanılabilecek şekilde kapsamlı olduğu için başucu kitabı niteliğinde. Fakat kitap Seam'e ilk başlayanlar için biraz ağır gelebilir onun için biraz deneyim kazanıldıktan sonra okunmalı. (5/5)<br /><br /><br /><br /><hr /><br /><a href="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPesnXwmmnI/AAAAAAAAAZk/F7WdXGU1WHc/s1600-h/9781590597927.gif"><img src="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPesnXwmmnI/AAAAAAAAAZk/F7WdXGU1WHc/s200/9781590597927.gif" alt="" id="BLOGGER_PHOTO_ID_5257860882371091058" border="0" /></a>Apress yayınevinden çıkan "<a href="http://www.apress.com/book/view/1590597923">Beginning JBoss Seam</a>" özellikle yeni başlayanlar için çok yararlı diyebilirim. Özellikle Seam'in getirdiği yeniliklerden Bijection ve Web Conversation kavramının temellerini başarılı ve kolay anlaşılır bir şekilde anlatıyor.<br />(4/5)<br /><p><br /></p><p><br /></p><br /><br /><hr /><p></p><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetUVjXGHI/AAAAAAAAAZ0/3Lx6TlKXZl0/s1600-h/seamyuan.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetUVjXGHI/AAAAAAAAAZ0/3Lx6TlKXZl0/s200/seamyuan.jpg" alt="" id="BLOGGER_PHOTO_ID_5257861654872791154" border="0" /></a><br />Seam'in 1.x versiyonu sürecindeki geliştiricilerinden<span> Michael Juntao Yuan'ın yazarlığını yaptığı </span>"<a href="http://www.amazon.com/Seam-Framework-Experience-Evolution-JBoss/dp/0137129394/ref=pd_bbs_sr_5?ie=UTF8&s=books&qid=1224268151&sr=8-5">JBoss Seam: Simplicity and Power Beyond Java</a>" <span> bu kitap yine Seam'e yeni başlayanlar için güzel bir kaynak. Şu anda satışta olan versiyon Seam 1.x sürümünü kapsıyor fakat yakın zamanda Seam 2.x'i kapsayan <a href="http://www.amazon.com/Seam-Framework-Experience-Evolution-JBoss/dp/0137129394/ref=pd_bbs_sr_5?ie=UTF8&s=books&qid=1224268151&sr=8-5">yeni sürümü</a> yayınlanacak.</span><br />(4/5)<br /><p><br /></p><p><br /></p><hr /><p></p><br /><a href="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPetE5TUo6I/AAAAAAAAAZs/8mum2kwv43c/s1600-h/practical.gif"><img src="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPetE5TUo6I/AAAAAAAAAZs/8mum2kwv43c/s200/practical.gif" alt="" id="BLOGGER_PHOTO_ID_5257861389591290786" border="0" /></a><br />Apress yayınevinden çıkan diğer bir kitap "<a href="http://www.apress.com/book/view/1590598636">Practical JBoss Seam Projects</a>". Henüz bu kitabı okumaya zamanım olmadı fakat okuma listemde üst sıralarda. Okuyan arkadaşlar fikirlerini paylaşabilirlerse çok sevinirim.<br />(?/5)<br /><p><br /></p><p><br /></p><p><br /></p><hr /><p></p><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetuBU4CAI/AAAAAAAAAZ8/q5Qb_toS_qI/s1600-h/hibernateinaction.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetuBU4CAI/AAAAAAAAAZ8/q5Qb_toS_qI/s200/hibernateinaction.jpg" alt="" id="BLOGGER_PHOTO_ID_5257862096119924738" border="0" /></a><br />Seam'in ve Hibernate'in yaratıcısı olan Gavin King'in yazarlığını yaptığı "Java Persistence with Hibernate"'in son ünitesi Seam'e ayrılmış. Seam'in ortaya çıkış sürecini ve temel özelliklerini yaratıcısının kaleminden okumak isteyenler mutlaka göz atmalılar.<br />(5/5)<br /><p></p> + 2008-10-17T23:24:13+00:00 + + + Necdet Yücel: Akademik Bilişim 2009 + http://nyucel.blogspot.com/2008/10/akademik-biliim-2009.html + XI. Akademik Bilişim Konferansı bu yıl Şanlıurfa'da Harran Üniversitesinde <a href="http://ab.org.tr/">yapılacak</a>. Yakında Akgül Hocanın <em>aktif katılım çağrısı</em>nı alırsınız ama ben şimdiden haber vereyim dedim.<br /><br />Her yıl olduğu gibi bu yıl da Konferans düzenlenmeden önce ev sahibi üniversitede bir toplantı yapılacak; 31 Ekimde Harran'da olacağız. Nereye gideceğiniz konusunda fikriniz olsun diye fotoğraflar eklerim ;) + 2008-10-17T00:21:46+00:00 + + + Ahmet Yıldız: Geri Sayım Başladı + http://www.bugunlinux.com/?p=118 + <p></p> + 2008-10-16T22:18:21+00:00 + + + Fatih Arslan: Bardağın yarısı boş mu yoksu dolu mu? + http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/ + <p>Bur meşhur <a href="http://en.wikipedia.org/wiki/Is_the_glass_half_empty_or_half_full%3F">sorunun</a> bir çok cevabı var. Msn iletisinde şunları yazmıştı geçen bir arkadaşım:<br /> +<strong><br /> +To the optimist, the glass is half full.<br /> +To the pessimist, the glass is half empty.<br /> +To the engineer, the glass is twice as big as it needs to be.<br /> +</strong><br /> +Benim çok hoşuma gitmişti. Aklıma takılmış olacak ki web&#8217;de oradan oraya zıplarken bir yerde şu harika cümleyi gördüm:<br /> +<strong><br /> +The physicists say the glass is neither. It is completely full, half with water, the other half with air.</strong></p> +<p>Ardından bugün okulda arkadaşımı gördüm ve bunu söylemiştim. Sonra başardık konuşmaya, başkaları ne derdi acaba diye düşünüyorken kendi aramızda, ben de o arada atladım ve &#8220;<em>Filizof ne derdi ? </em>&#8221; diye sordum Biraz sessizlik oldu, düşünürken şunu deyiverdim:</p> +<p><strong>Hangi bardak ? </strong></p> +<p>Bu da böyle bir anımdı bugün. Bu bardağın yarısı boş mu dolu mu sorusu bu arada bilimsel olarak kullanılan bir metotmuş. Adı da <a href="http://en.wikipedia.org/wiki/Litmus_test_(politics)">Litmust Testi</a>. Psikoloji&#8217;de bir insanın en basitinden <strong>iyimser</strong> mi <strong>kötümser</strong> mi düşündüğünü belirtmek için yarıyormuş. Bu yöntem ile çok farklı düşünen insanları da görmek mümkün oluyor , örneğin yukarıdaki <strong>mühendis</strong> örneği gibi.</p> +<p>Bu testi farklı amaçlarla da kullanabiliyoruz, örneğin bir bardaki barmen-müşteri <a href="http://de.wikipedia.org/wiki/Wikipedia:Humorarchiv/Halb_voll_oder_halb_leer%3F">ilişikisi</a>. <strong>Barmen</strong> bardağı her zaman tam dolu, yarı dolu, çeyrek dolu,&#8230; şeklinde görüyor etrafı, fakat bardaki müşteriler için tam tersi, onlar tam boş, yarım boş, çeyrek boş,&#8230; şeklinde görüyorlar etraftaki bardakları. </p> + <p></p> + <hr noshade="noshade" /> + <small><p>Copyleft - Fatih Arslan - <a href="http://blog.arsln.org">Arslanlar Şehri</a>, 2008. | + <a href="http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/">Permalink</a> | + <a href="http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/#comments">Yorum(1)</a></p></small> + 2008-10-16T21:00:40+00:00 + + + LKD YK: Eylül Ayı Üye Bülteni Yayınlandı + http://gunluk.lkd.org.tr/yk/2008/10/16/eylul-ayi-uye-bulteni-yayinlandi/ + <p>Linux Kullanıcıları Derneği’nin yapmış olduğu çalışmaların konsantre bir şekilde anlatıldığı aylık bülteni bu kez Eylül ayı için dernek üyelerimizden Seyfi Genç hazırladı. Bülten tüm üyelerimizin e-posta adreslerine gönderildi.</p> +<p>Gönderim sırasında Temmuz ayında olduğu gibi ufak çaplı bir kaza da yaşadık, e-postalara Reply-To yerine yanlışlıkla BCC (gizli karbon kopya) satırı eklenmesi nedeniyle yönetim kurulu listesinin moderatörleri Alper ve Doruk&#8217;un posta kutularına bir anda 1000′e yakın e-posta doldu&#8230; Neyse en azından bu sefer liste arşivleri kurtuldu :) (züğürt tesellisi)</p> + 2008-10-16T20:02:32+00:00 + + + Hakan Uygun: Google Chrome, Özgür Yazılım ve Amerikan Ticaret Kanunları + http://www.hakanuygun.com/blog/?p=132 + <p><a href="http://www.webrazzi.com/2008/10/15/google-suriye%e2%80%99-de-chrome-kullanimini-engelledi/">webrazzi</a>&#8216;den okuduğum habere göre Google Chrome uygulamasını Suriye, İran ve Amerikan Ticaret Kanunu&#8217;na göre ambargolu bir çok ülkeden indirilmesine kapatmış. Gene aynı haber içerisinde Google&#8217;ın Adsense için her hangi bir yaptırım uygulamadığı söyleniyor. Yazıda ticari bir hizmetin kapatılmayıp, ücretsiz bir yazılımın kapatılması üzerinde duruluyor&#8230;</p> +<p>Bense başka bir noktaya takıldım. Özgür yazılım lisanslarının Ticaret Kanunları çerçevesinde nasıl değerlendirileceği.</p> +<p>Sonuç ürün üzerinde Amerikan Ticaret kanunları çerçevesinde bir ambargo söz konusu olabilir, sonuçta Google bir pazar olarak Amerika ve kanunlarla uğraşmak yerine zaten bir pazar olarak görmediği ülkeler için ambargoyu uygular. Kaynak kodlara ulaşılması, derlenmesi ve ilgili kanunların geçerli olmadığı başka ülkeler üzerinden tekrar yayınlanması ise engellenemez. Tam bu noktada düşündüğüm ise çeşitli kanunlarla özgür yazılım ürünü kaynak kodlarımızında yasaklanması söz konusu olabilir mi? Son durumunu bilmiyorum ama bir dönem Amerikan kanunları nedeniyle şifreleme algoritmaları açısından bir dolu sorun yaşanıyordu&#8230;</p> +<p>Bir de aklıma takılan acaba Amerika tarafından ambargolu ülkeler acaba bir fork yaparlar mı? <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p> +<p>Aslında, dünyanın bu kadar küçüldüğü, sınırların bu kadar belirsizleştiği bir ortamda bir şeylerin kanunlarla sınırlandırılmaya çalışılması konusunda sorulacak o kadar fazla soru ve tartışılacak konu var ki&#8230;</p> + 2008-10-16T18:06:04+00:00 Necdet Yücel: Fazıl Hüsnü Dağlarca @@ -174,14 +344,6 @@ Projeye destek olmak i&ccedil;in :&nbsp; </strong></p> <a href="http://members.comu.edu.tr/nyucel/img/blog/daglarca.jpg"><img src="http://members.comu.edu.tr/nyucel/img/blog/daglarca.jpg" alt="" border="0" /></a><br />Türk şiirinin büyük ismi <a href="http://tr.wikipedia.org/wiki/Faz%C4%B1l_H%C3%BCsn%C3%BC_Da%C4%9Flarca">Fazıl Hüsnü Dağlarca</a> 94 yaşında zatürre tedavisi gördüğü hastanede yaşamını yitirdi.<br /><br /><div><br /></div> 2008-10-15T23:08:13+00:00 - - Bora Güngören: Aküyle çalışan atsız fayton - http://blogs.portakalteknoloji.com/bora/blog/2008/10/15/200/ - <p>Memleketim insanı yapar tabii. </p> - -<p><a href="http://www.radikal.com.tr/Default.aspx?aType=Detay&amp;ArticleID=903522&amp;Date=15.10.2008&amp;CategoryID=79"><img src="http://i.radikal.com.tr/644x385/2008/10/15/fft5_mf59848.Jpeg" /></a></p> - 2008-10-15T20:56:00+00:00 - FTP ekibi: OpenOffice 3.0 Çıktı http://gunluk.lkd.org.tr/ftp/2008/10/15/openoffice-30-cikti/ @@ -195,146 +357,5 @@ Projeye destek olmak i&ccedil;in :&nbsp; </strong></p> <p>- yansı ekibi</p> 2008-10-15T13:16:24+00:00 - - LKD YK: Dünya Plone Günü’nde Plone Semineri - http://gunluk.lkd.org.tr/yk/2008/10/15/dunya-plone-gununde-plone-semineri/ - <p>Önde gelen özgür içerik yönetim sistemlerinden <a href="http://plone.org">Plone</a>&#8216;un yaygınlaştırılması için 7 Kasım &#8220;<a href="http://plone.org/events/wpd">Dünya Plone Günü</a>&#8221; ilan edildi ve o günde dünyanın dört bir yanında Plone&#8217;u tanıtma ve yaygınlaştırma amacıyla seminerler düzenleniyor.</p> -<p>Derneğimizin köklerini oluşturan, o zamanki adıyla Linux Kullanıcıları Grubu&#8217;nun aktif insanlarından H. Turgut Uyar bizimle bağlantı kurarak bu etkinliği haber verdi ve o gün bu konuda bir seminer verebileceğini söyledi. Çoğumuz onu 90&#8242;lı yıllardaki Türkiye&#8217;nin ilk GNU/Linux dağıtımı, Turkuaz Linux&#8217;tan hatırlıyoruz. Kendisi 2002 yılından bu yana da Plone kullanıyor. Plone ile site projeleri gerçekleştirdi (www.lkd.org.tr de dahil), Plone&#8217;u temel alan uygulamalar geliştirdi ve Plone&#8217;un Türkçe çevirisini yaptı. Aynı zamanda Plone Vakfı&#8217;nın üyesi.</p> -<p>Etkinlikten haberdar olan <a href="http://www.inetd.org.tr">Internet Teknolojileri Derneği</a> de etkinliğin tanıtımında katkıda bulunmak istediğini belirtti. <a href="http://www.bilgi.edu.tr">Bilgi Üniversitesi</a> ile bağlantı kurduğumuzda, seve seve böyle bir etkinliğe ev sahipliği yapacaklarını belirttiler.</p> -<p>Plone&#8217;la ve Plone&#8217;a ilgi duyan insanlarla tanışmak isteyen herkesi Dünya Plone Günü, 07 Kasım 2008&#8242;de, 14:00-15:00 arasında İstanbul Bilgi Üniversitesi Dolapdere Kampüsü&#8217;nün D132 numaralı salonuna bekliyoruz.</p> - 2008-10-15T06:50:06+00:00 - - - Bora Güngören: Bodoslama Bilişim Şirketi 4 - Finans Dediğin Elinin Kiri - http://blogs.portakalteknoloji.com/bora/blog/2008/10/15/199/ - <p>Bu seferki öykü özellikle 2000 krizini yaşayanların bazılarına tanıdık gelecektir herhalde. Mevcut ekonomik durum için de öğretici olur diye düşünüyorum. </p> -<p>Genç girişimcimizin şirketi çok ciddi bir kaç kamu projesi aldıktan sonra kendisi şirketin büyütülmesi için yatırım yapılması gerektiğine karar verir. Henüz bu projeler teslim de edilmemiştir ama son derece iyi teklif metinleri yazıldığına göre, elbette o metinlerin de gerçekleşeceğine inanır ve çalışmaya başlar. </p> -<p>Bilindiği gibi bir yazılım şirketinin en önemli demirbaşlarından birisi en az 2, mümkünse 3 aracın otopark alanına zorlukla sığan bir makam arabası olmalıdır. Bu nedenle girişimcimiz bu demirbaş araçlardan en az 2 tane alır. Kendisi tek yöneticidir ama kapının önünde 2 araç gerçekten çok güzel gözükecektir. </p> -<p>Arkasından toplamda en fazla 10 sözleşme yöneten, yılda en fazla 10 tane proje için 10 tane fatura kesen, ve onlarca çalışan da olsa hepsi her ay aynı maaşları alan kişilerin bordrolarını dökmek için idari - mali işler bölümüne genç ve dinamik bir kadro kurmak gerekir. Bu bölüme önce 5, sonra bir 5 daha derken 10 kişi işe alınır. Bu 10 kişinin telefon açması uygun olmadığından bu arkadaşlara bir de ön büro kurulur. </p> -<p>Bu kadar kalabalık bir finans departmanı oluşunca, bankalardan kredi almak, teminat mektubu elde etmek gibi konularda önemli bir avantaj elde edilir. Artık kendisi 1-2 banka ile muhatap olacağına, ülkemizdeki hemen her banka ve hatta her bankada birden fazla şube ile muhatap olacak bir kadro olduğundan, her şubede hesaplar açılır. Her şubeye her ay güncel mizanlar yollanarak ne kadar büyük ve güçlü bir şirket olunduğu gösterilir. Her bir seferinde en az 10 bankadan kredi teklifi istenir. Hatta teklifler gerekmese de istenir. Bazen bir bankanın mevduata verdiği faiz öyle çekici gelir ki - öteki bankadan kredi çekilip ilk bankaya faize yatırılarak para kazanılır. Bu sayede şirket iş yapmadan para kazanmanın keyfine varmaya başlar. </p> -<p>Tabii şirketin aylık gelirleri giderleri aşağı yukarı sabit olduğu için bu kadar kalabalık idari kadro nedeni ile teknik kadro hızlı genişleyemez. Ancak yeni iş alındıkça genişleme sağlanır. Böylece şirketin gerçek iş gücünün büyümesi yavaşlar. Bu da doğal karşılanır - zaten 50 bin kişiyi geçen ABD'li şirketlerin hala hızla büyümesi de ancak yalandır. </p> -<p>Büyüme yavaşlarken, elbette ters giden işler ve müşterilerden geciken ödemeler de olur. Şirketin kuvvetli bir idari mali işler kadrosu olduğu için hemen bankalardan proje finansmanları alınmaya başlanır. Bu projelerde dışarıdan yaptırılan işler için de rahatlıkla ileri vadeli çekler ve diğer finansal araçlar ile gün kurtarılır. Böylece kapsamlı bir finansal yönetim başlamış olur.</p> -<p>Elbette bu finansal yönetim toplamı yönetmektedir. Ama neyin toplamının yönetildiği tartışmalıdır. Eldeki proje portföyü içinde hangi projelerin zararda olduğunu ifade etmek zor gelir. Muhasebe ekibi zaten onlarca bankadaki hesaplar, çekler, krediler ve bunların faizleri ile meşguldür. Tek düzen muhasebede bunların hepsinin ayrı hesap kodu vardır ve bu kadar hesap kodu içinde yanlış işlem yaparak Maliye'ye yanlış beyan vermek istemezler. Bu nedenle örneğin bir personelin bordrosundan çıkabilecek maliyet kalemlerini yarı yarıya çalıştığı iki projeye eşit bölüştürmek için proje muhasebe hesabı açacak zaman olmaz. </p> -<p>An gelir, finansal yönetim, muhasebeden yardım istemeye başlar. Bankaların bazı rasyoları güzel görmesi için muhasebenin o şekilde değil de bu şekilde tutulması gerekmektedir. Ayrıca fasıllar arası aktarımlar da önerilir. Ani sermaye artırımları ve indirimleri, demirbaş alımları ve satışları başlar. Bankalardan krediler geldiği sürece, genç girişimcimiz bunları umursamaz. </p> -<p>Bu arada teminat mektubu alabilmek için arsa, apartman dairesi gibi taşınmaz malların alınması salık verilir. Zaten yazılım şirketi makina sanayinde bir fabrika olduğu için ileride depo ve ek bina yapılabilecek geniş bir arazi içinde bina yapma mantığı geçerlidir. Hemen gidilir, şehrin dışında bir yerde geniş arsalar alınır. Arsa başı boş kalmasın diye bir de bina yapılır. O binada hiç bir yazılımcı çalışmayacak istemez ama bir kaç idari personel ve bazı yazılımcılar rotasyon usulü oraya gider gelirler. Ayrıca binanın güvenliği, temizliği gibi ek masraflar çıkar. Binaya gidecek personel için servis aracı satın alınır. Araç için şoför işe alınır. </p> -<p>Gün gelir, ülkede finansal sıkıntılar patlak verir. Bazı bankalar batar. Diğer bankalar da kendi durumlarını sağlama almak için kredi borcu olan firmalardan bu kredileri kapatmalarını rica ederler. Bizim girişimci tam da bu sırada arka arkaya bazı işlerinde alacaklarını alamaz. Kendisine verilen bazı çekler de karşılıksız çıkar ve sıkıntıya düşer. Derhal kendisinin dışarıya olan borçları sınıflandırılır. </p> -<p>Öncelikte banka borçları vardır çünkü bankalar en önemli iş ortaklarıdır. Sonra şirketin güçlü görünmesini sağlayan yan masraflar - özellikle de beylik ifadeler ile ne kadar güçlü olduklarını vurgulayan reklam maliyetleri kenara ayrılır. Sonra da kısıntılar başlar. Personel maaşları aylarca eksik ödenir. Taşeron firmaların ödemeleri sudan nedenlerle geciktirilir. Örneğin her gün işe gelen bir müdür tam da o ara hasta olur ve onun dışındaki müdürler de nezaketsizlik olacağı gerekçesi ile belgelere uzun süre imza atmazlar. </p> -<p>Bu şekilde bazı taşeronlar batırılır ki onların alacaklarını tahsil etme şansı kalmasın. Bazı elemanların istifa etmesi sağlanır ki tazminat alamasın. </p> -<p>Ancak bu arada kötü bir şey olur. Hiç kimse bu şirkette çalışmak istemez, ayrıca kimse bu şirketin taşeronu olmak da istemez. Giderek nitelikli insanların şirkete girişi kısıtlanır. Ayrılanlar içinde de ilk ayrılanlar en nitelikli insanlar olur. Genç girişimcimiz bunu da önemsemez. Bilanço ve aylık mizanlarda harika rasyolar vardır. Daha tahsil edemese de ileride alacağı paraları koyunca harika sayılar oluşmaktadır. Zaten finansal performans en önemli performanstır. </p> -<p>Bu arada ortaya çıkan banka krizleri sonrası ülkede yeni yasalar çıkar. Bankaların başka bazı rasyolara da bakması istenir. Bu rasyolar, önceki rasyoları iyi göstermek için oynanmış bilançolarda hassaslaşan yerleri gıdıklamaktadır. Rasyo sayısı artınca, arkadaşın bilançosu da o kadar sağlam gözükmez. Bu yeni teknik yüzünden ahbaplık gelişmiş olan banka şube müdürlerinin de eli kolu bağlanır. </p> -<p>Şirket tüm odağını soruna çözmeye verir. Tüm idareciler sürekli bankalara gidip kredi aramaktadır. Kredi sağlayabilen idareci ödüllendirilir. Bu arada projelerdeki aksaklıklar raporlansa dahi dinlenmez ve müşterlerden gelecek ödemeler daha da çok gecikir. Müşteriden gelecek olan gerçekten hak edilmiş para yerine bankadan gelen borç işe süreç yürütme alışkanlığı daha da derinleşir. </p> -<p>Gün gelir, şirketin rasyoları o kadar zayıflar ki şirketin borç ödeme kapasitesini doldurduğu anlaşılır. O an şirket yeni kredi alamaz olur ve müşterilerine odaklanması gerektiğini anlar. </p> -<p>Ancak müşterilerin bazıları için olan olmuş, iş işten geçmiştir. Bu müşteriler ile artık insani konuşma değil de sözleşme maddeleri üzerinden tartışma geçerlidir Bu ortam altında müşteri ödemeleri alınamaz, bankalardan ek kredi alınamaz. Şirket iflasa sürüklenir. Ancak dışarıya bu hissettirilmez. </p> -<p>Tam bu sırada genç girişimcimize uluslar arası bir ödül gelir. İki yıl önceki oynanmış bilançoları örnek göstererek, en hızlı büyüyen şirketlerden birisinin kurucusu olarak bir ödüle aday gösterilmiştir ve yıllar süren süreç sonunda bir şekilde seçilmiştir. Bu ödül bankaların ve yatırımcıların şirkete bakışını değiştirir - kredi muslukları açılır, hatta şirketin hisselerinin bir bölümü oldukça iyi bir bedel karşılığı satılır. </p> -<p>Şirket iflastan dönmüştür. Bu sırada büyük emekleri geçen idari mali kadroya derhal ikramiyeler verilir. Ancak o dar zamanda maaşlarını eksik alarak projeleri zamanında tamamlayan esas çalışanlar unutulur. Şirket iflastan kurtulmuştur ama personeli ile olan barışı bozulmuştur bir kere. </p> -<p>Genç girişimcimizin bu krizden çıkarttığı ders ise, finans departmanını güçlendirmek olur ve 10 kişi daha işe alarak 20 kişilik bir finans departmanı kurulur. </p> - 2008-10-15T01:19:00+00:00 - - - Bora Güngören: Masa düzeni - http://blogs.portakalteknoloji.com/bora/blog/2008/10/15/198/ - <p>Az önce okuduğum bir <a href="http://www.askmen.com/sports/health_200/215_mens_health.html">yazıya</a> göre arada bir masanızın düzenini değiştirmek, sizi rutinden çıkarttığı için olaylara dikkatinizi verme becerinizi artırıyormuş. </p> - -<p>O zaman, masası hep dağınık olan kişiler acaba size en çok dikkatini veren kişiler mi? :) </p> - 2008-10-15T00:39:00+00:00 - - - Bora Güngören: İki blog keşfi - http://blogs.portakalteknoloji.com/bora/blog/2008/10/14/197/ - <p>Bugün Rusya, Ukrayna ve diğer kuzey komşularımızı değişik bir gözle anlatan iki blog keşfettim. Bağlantılarını da burada paylaşmak istedim. <a href="http://www.dincarslan.org/">Dinç Arslan</a> ve <a href="http://ulasergin.blogspot.com/">Ulaş Ergin</a>'in blogları kesinlikle okunmaya değer. </p> - 2008-10-14T11:32:00+00:00 - - - Özgürlükiçin.com: OpenOffice.org 3.0 Duyuruldu - http://ozgurlukicin.com/haber/openofficeorg-30-duyuruldu/ - <p><img src="http://www.ozgurlukicin.com/media/upload/image/ooo3.png" border="0" alt="ooo3.png" width="310" height="201" align="left" /><a href="http://www.openoffice.org">OpenOffice.org</a> projesinin sekizinci doğum gününde topluluk, OpenOffice.org 3.0'ın yayınlandığını duyurdu. Yazılımın üçüncü ana sürümü, kullanıcıları için pek çok yeni özellik ve gelişmiş, geliştirilebilir araçlar sunuyor. OpenOffice.org artık Mac OS X platformunda da çalışıyor.<br /> <br /> OpenOffice.org 3.0 basit bir uygulamadan çok daha fazlasını içeriyor. Bu sürümle birlikte; temel kelime işlemci, hesap tablosu, grafik, formül ve veritabanı uygulamaları, OpenOffice.org eklenti deposundan indirilebilen genişletmelerle daha da zenginleştirilebiliyor. Bu özellik sayesinde kurumsal kullanıcılar, okullar ve ev kullanıcıları ofis yazılımlarını kendi isteklerine göre özelleştirebiliyor.<br /> <br /> Yüz binlerce kişi tarafından indirilen OpenOffice.org'un önceki sürümleri, projenin popülaritesini kanıtlamakta. OpenOffice.org projesinin topluluk yöneticisi olan Louis Suarez-Potts, yeni sürümle ilgili olarak özetle “Pazarımız büyüdü.” dedi ve sözlerine ”Hükumetler ve kuruluşlar ardı ardına '<a href="http://tr.pardus-wiki.org/Opendocument">Açık Belge Biçimi</a>'ni (OOo'nun öntanımlı kullandığı, ISO onaylı standart) seçiyor, eşzamanlı olarak OpenOffice.org'u da benimsiyor ve çok seviyorlar. OpenOffice.org 3.0 sürümüyle uygulama artık; MS Office ile daha uyumlu, yetenekli ve geliştirilebilir bir hale geldi.” diye devam etti.<br /> <br /> OpenOffice.org pazarlama takımı ise yeni sürüm hakkında “OpenOffice.org artık eskisinden çok daha güçlü. MS Access 2007 .accdb dosya desteği, geliştirilmiş VBA makro desteği ve <a href="http://tr.pardus-wiki.org/Office_Open_XML">MS Office Open XML</a> dosyalarını okuyabilme yeteneği sayesinde MS Office yazılımından göç her zamankinden çok daha kolay.” diyor.<br /> <br /> OpenOffice.org 3.0; yeni “Başlangıç Merkezi”, güncellenen açılış ekranı, yeni simgeseti ve kullanılabilirlik geliştirmeleriyle yepyeni bir yüze kavuşmuş durumda. Yeni özellikler şu şekilde:</p> -<h3>Kelime İşlemci (Writer)</h3> -<ul> -<li>Düzenleme sırasında çoklu sayfa görünümüne izin veren yeni yakınlaştırma kontrolü</li> -<li>Yeni ve güçlü çoklu dil desteği</li> -<li>Geliştirilmiş “Notlar” özelliği</li> -<li>Geleneksel ofis belgelerinin yanı sıra web sayfalarını ve wiki belgelerini düzenleyebilme</li> -</ul> -<h3>Hesap Tablosu (Calc)</h3> -<ul> -<li>Tablo başına 1024'e kadar sütun desteği</li> -<li>Yeni güçlü eşitlik hesaplayıcı</li> -<li>Çoklu kullanıcılar için yeni işbirliği özelliği</li> -</ul> -<h3>Çizim (Draw)</h3> -<ul> -<li>Poster boyutunda grafik düzenleme yeteneği<br /></li> -</ul> -<h3>Sunu (Impress)<br /></h3> -<ul> -<li>Sunu içinde yer alan tablolar için düzenleyici</li> -</ul> -<p><br /> OpenOffice.org'un eklenti destekleme özelliği 3.0 ile de devam ediyor. Farklı geliştiriciler tarafından hazırlanan sunu hazırlama konsolu, ticaret analitikler desteği, PDF aktarma, melez PDF belgesi oluşturma gibi pek çok özellik sağlayan eklentilerin sayısı gün geçtikçe artıyor.<br /> <br /> OpenOffice.org 3.0, kullanıcılarının Kelime İşlemci (Writer) ile web ve wiki belgesi oluşturmasını sağlayarak, XHTML ve MediaWiki gibi belli bir kesime hitap eden web dillerini öğrenmeye gerek kalmadan, Web 2.0 dünyasına katılmasını kolaylaştırıyor.<br /> <br /> OpenOffice.org'un yeni sürümünün PiSi paketinin yakın bir zamanda depomuzdaki yerini almasını bekliyoruz.</p> - 2008-10-14T10:31:00+00:00 - - - Gürer Özen: ceeebit - http://6kere9.com/blag/2008/10/14/73/ - <p> -11 Ekim Cumartesi günü, Özgürlükİçin ekibi ile birlikte Cebit fuarında -Pardus standındaydık. -</p> - -<p> -Bir süredir üstünde çalıştığımız robotumuz -<a href="http://ibilisim.com.tr/inci/index.html">İnci</a>'yi tanıttık, -geldiği noktayı gösterdik, birkaç küçük gösterisini yaptık. -</p> - -<img src="http://cekirdek.pardus.org.tr/~gurer/inci-cebit.jpg" /> - -<p> -İnci, araştırma geliştirme amaçlı, omni hareket sistemine sahip bir -robot. Ayrıca üzerindeki gömülü bilgisayarında çalışan Pardus 2008 ile, -dünyada Pardus'la çalışan ilk otonom robot :) -</p> - -<p> -Şehre çok uzak ve biçimsiz bir yerde yapılmasına karşın, üşenmeyip gelen -Pardus gönüllüleriyle çok keyifli vakit geçirdik. -</p> - 2008-10-14T08:34:00+00:00 - - - Özgürlükiçin.com: Linux Yüklü Dijital Piyano - http://ozgurlukicin.com/haber/linux-yuklu-dijital-piyano/ - <p><img src="http://www.ozgurlukicin.com/media/upload/image/YAMAHA3.jpg" border="0" alt="YAMAHA3.jpg" align="left" /></p> -<p>Yamaha firmasının dijital piyano modelleri arasına, Linux işletim sistemi gömülü olarak gelen yeni modeller ekledi. Bir gömülü Linux dağıtımı olan Montavista Linux, akustik kayıt ve web temelli uygulamalarla bütünleşik çalışabilen yeni arabirim imkânları sunuyor. Piyanonun içinde 333 Mhz Geode temelli bir anakart ve Montavista Linux mevcut.</p> -<p>Yamaha'nın ürettiği bu piyanonun tuşlarının altına yerleştirilmiş minik bir kutuda yer alan kontrol ünitesi içindeki LSI (Large-scale integration – Geniş-ölçekli entegrasyon) özellikli işlemci, özel bir RTOS (Real Time Operating System – Gerçek Zamanlı İşletim Sistemi) çalıştırıyor. RTOS, bir tuşa basılmasıyla bırakılması arasında, tellere vuran çekiçlerin hareketlerini izleyen hassas alıcıların gönderdiği verileri topluyor. Çekiçlerin ve tuş basınçlarını kaydederek, gerçek bir piyano çalışının verileri bu özel sistem aracılığıyla kayıt altında alınıyor.<br /><br />Çekiçlerin ve tuş basıncının konumunu ölçmenin ötesinde, RTOS onları denetleyebiliyor ve böylece yakaladığı verileri “icra” olarak yeniden üretiyor. Sistemde bir optik sürücü mevcut ve kullanıcılar kendi icralarının kaydını yapıp dinleyebildikleri gibi aynı zamanda da büyük üstatların önemli icralarının kayıtlarını da satın alabilirler.</p> -<p>Daha anlaşılır bir dille söylemek gerekirse, evinizdeki bu piyano ile Fahir Atakoğlu'nun sadece son albümünü değil, tuşlara dokunuşunu ve piyano çalışını da evinize taşıyabiliyorsunuz.</p> -<p>Mark IV Disklavier modeli ile Yamaha, sisteme gömülü olan Linux işletim sistemi sayesinde web temelli istemci/sunucu ile uzaktan kontrol arabiriminin çalışmasına olanak tanınıyor ve bu sayede kullanıcılar, piyanonun yanına kadar gidip optik sürücülerden müziği yüklemek ve çalmak zahmetinden de kurtuluyorlar. Bu uzaktan kumanda sayesinde kullanıcılar akustik kayıt, kayıt işleme ve çalma özellikleri yanında, uzak müzik servislerinin tekliflerini de değerlendirme imkânı bularak İnternet üzerinden alışveriş yapabiliyor.<br /><br />Mark IV Disklavier piyano, 333 Mhz AMD Geode tabanlı bir anakart ve Montavista Linux ile birlikte çalışıyor. RAM boyutu 256 MB olup, sabit diski 80 GB genişliğinde. I/O bileşenleri, Ethernet, WiFi, çift USB portu, seri portlar, ses giriş/çıkış, video giriş ve stereo hoparlörden oluşuyor. Piyanomuzda ayrıca PCI genişleme arabirimi de bulunmaktadır :).</p> - 2008-10-13T19:35:00+00:00 - - - Alper Kanat: Arch Linux'da Türkçe Yazım Kontrolü - http://raptiye.org/blog/2008/10/13/arch-linuxda-turkce-yazim-kontrolu/ - <img src="http://raptiye.org/resimler/simge/archlinux.png" alt="arch linux" width="128" height="128" />Bugün <a title="samed'in sitesini ziyaret etmek için tıklayın.." href="http://eventualis.org/" target="_blank">Samed BEYRİBEY</a>'in büyük katkılarıyla <a title="topluluk sayfasına ulaşmak için tıklayın.." href="http://www.archlinuxtr.org" target="_blank">Arch Linux Türkiye Topluluğu</a> <a title="e-posta listeleri hakkında detaylı bilgi almak için tıklayın.." href="http://www.archlinuxtr.org/liste/" target="_blank">listelerine</a> düşen e-posta'yı görmeyen ve bilmeyenler için buraya da hiç bir değişiklik yapmadan göndermek istiyorum.<br /><br />Merhaba,<br />Zemberek geliştiricisi Serkan Kaba ile konuştuktan sonra, (Archlinux'da<br />Türkçe yazım denetimini nasıl sağladığımızı teknik olarak anlattım)<br />bir duyuru yolu ile topluluğumuzu bilgilendirmek istedim.<br /><br />Bu duyuruyu, gezegen, blog vs. ortamlarda yazabilir, paylaşabilirsiniz.<br /><br />AUR üzerindeki zemberek-server paketinin yardımı ile enchant destekli<br />*tüm* uygulamalarda Türkçe yazım denetimini sorunsuz olarak<br />yapabiliyoruz. Bu iş için zemberek kütüphanesinin *şu an için* 2.1<br />sürümü kullanılıyor, bir takım testlerden sonra tekrar paket haline<br />getirilerek son sürümü olan 2.1.1'e geçiş yapılacak.<br /><br />Ayrıca, KDE3 kullanıcıları, zpspell paketini kurarak, yazım<br />denetimini sorunsuz gerçekleştiriyor. KDE4 enchant kütüphanesini<br />kullandığı için KDE4 kullanıcılarının zpspell paketini kurmasına<br />gerek kalmıyor.<br /><br />zemberek-server init betiği ister Sun-JRE ister OpenJDK (icedtea vs.)<br />şekilde çalıştırılmaya hazır biçimde, hem AUR'da hem de SVN[1]'de yerini<br />almış durumda. <br /><br />GTKseverleri de ayrıca bilgilendirmek istiyorum: enchant destekleyen<br />her türlü programda (xchat, gaim, evolution ve son olarak claws-mail<br />-ilk akla gelenler- vs) Türkçe yazım denetimi yapmak mümkün oluyor.<br /><br />Ayrıca, http://code.google.com/p/zemberek proje sayfasındaki openoffice<br />eklentisi ile de, OpenOffice üzerinde Türkçe yazım denetimi yapmak<br />mümkün oluyor.<br /><br /> [1] = http://svn.archlinuxtr.org/projects/packages/zemberek-server/<br /><br />Saygılarımla,<br />Samed Beyribey<br /><br />Tüm Arch Linux kullanıcılarına afiyet olsun!<div class="feedflare"> -<a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=ziA2M"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=ziA2M" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=I9rvm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=I9rvm" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=CBSSm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=CBSSm" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=feehM"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=feehM" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=ffh9m"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=ffh9m" border="0" /></a> -</div> - 2008-10-13T17:49:58+00:00 - - - Onur Tolga Şehitoğlu: Like a Prayer - http://sehitoglu.web.tr/gunluk/?p=105 - <p>Son dönemde mail istemcilerinin büyük çoğunluğunu İnternet tarayıcıları ele geçirdi. Çogu kişi IMAP istemciler yerine aslen HTTP-IMAP geçidi olan webmail uygulamalarını tercih ediyor.</p> -<p>Webmail sunucularının büyük çoğunluğu durumsuz çalışıyor. Yani istemciden gelen her tıklamada yeni bir IMAP oturumu açıp işlemi yaptıktan sonra oturumu kaybediyor. <a href="http://www.roundcube.net/">Rouncube</a> gibi posta başlık listesini tamponda tutanlar var ama hala bir &#8220;yetkilendir-işlemi yap-çık&#8221; döngüsünü işletmek zorunda kalıyorlar. </p> -<p>İşlemi hızlandırmanın bir yolu bir IMAP vekil sunucusu yerleştirmek (Bkz. <a href="http://www.imapproxy.org/">imapproxy</a>) böylelikle yetkilendirmeyi ve oturumu açık tutarak yeniden kullanabiliyorsunuz. Ama hala sunucu, istemcinin <strong>durumunu</strong> tutmadığı için thunderbird, kmail, evolution benzeri istemcilerden yavaşsınız.</p> -<p>İki yıl kadar önce, ya bunu yapmışlardır dediğimde <a href="http://www-uxsup.csx.cam.ac.uk/~dpc22/prayer/">Prayer</a>&#8216;la karşılaştım. C ile yazılmış, tam düşündüğüm gibi her oturum için oturumun durumunu sunucuda tutan, IMAP oturumunu açık tutan ve dolayısıyla her tıklamada sadece minimum gerekli işlemi yapan, bu sayede de son derece hızlı bir webmail yazılımı. Kullanıcı arayüzü çirkin olsa da hızı gerçekten müthiş. Ayrıca PHP tabanlı olan webmail&#8217;lere göre güvenli olduğu da muhakkak. Eminim Java gibi bir dilde uygulama sunucuları üzerinde çalışan muadilleri vardır ama ben Prayer&#8217;in bu koşullarda popüler olmamasına çok şaşırıyorum. </p> -<p>Eeee, bunları niye şimdi yazıyorsun derseniz, yeni sürümü çıkmış, Gökdeniz kurmuş, ben duyurayım, siz kurun, sonra gelenler de hani bana hani bana desin diye&#8230; <img src="http://sehitoglu.web.tr/gunluk/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p> - 2008-10-13T11:44:07+00:00 - - - Web-CG: Liste.linux.org.tr yenilendi - http://gunluk.lkd.org.tr/webcg/2008/10/13/listelinuxorgtr-yenilendi/ - <p>Uzun süredir aynı tasarım ve içerik ile yayında olan liste.linux.org.tr sayfamız yenilendi. Çalışmada emeği geçen herkese özellikle sayfayı hazırlayan Mehmet Fatih YILDIZ (mfyz) &#8216;a teşekkür ediyoruz.</p> -<p>liste sayfası, linux.org.tr, lkd.org.tr ve bunlara ağlı alt alan adları ile ilgili her tür görüş, öneri ve isteklerinizi web[at]linux.org.tr adresine yazabilirsiniz.</p> -<p>Not: Linux gezegeni hafta sonu yaşanan bir dns sorunu sebebi ile güncellenememiştir. Bu aksaklıktan dolayı bütün gezegen sakinlerinden özür dileriz.</p> - 2008-10-13T06:40:48+00:00 - diff --git a/www/rss20.xml b/www/rss20.xml index 1d6cf74..235ade7 100644 --- a/www/rss20.xml +++ b/www/rss20.xml @@ -8,113 +8,39 @@ Linux Gezegeni - http://gezegen.linux.org.tr - Serkan Altuntaş: Samsung ML-1610 Mono Laser Printer - http://serkan.gen.tr/aug/181 - http://serkan.gen.tr/aug/181 + Erhan Ekici: Ne onlar başka tanrının çocukları, ne de biz… + http://www.erhanekici.com/blog/2008/10/20/ne-onlar-baska-tanrinin-cocuklari-ne-de-biz/ + http://www.erhanekici.com/blog/2008/10/20/ne-onlar-baska-tanrinin-cocuklari-ne-de-biz/ -Babam acilen bir lazer yazıcıya ihtiyaç duyunca bugün aşırı değerli dolara rağmen Samsung ML-1610 Mono Laser Printer aldık. Hatta o kadar acilen lazımdı ki şehirdeki Bimeks ve iki Teknosa&#8217;da bu modelden kutusu açılmamış tek bir ürün bile kalmadığından benim hiç yapmayacağım bir şeyi yapıp teşhir ürününü aldık. Gerçi karlı da çıktık. Normalde kutuyla gelen %60 [...] - Paz, 19 Eki 2008 20:36:35 +0000 +&#8220;Ne senden fazlayım / Ne senden az / Aynı macerada ayrı biraz / Gözle biçim biçim / Kalple anlar içim / Ayrı gayrı olmaz / Sen yoksan ben hiçim +Aç kardelen aç / Dağın olayım, suyun olayım / Göğün olayım aç +Her çiçeğin kar altından / Güneşe giden masalında / Yaşamak yeniden tazelenir / Yeniden anlamlanır [...] + Per, 23 Eki 2008 22:48:01 +0000 - Necati Demir: Ülkemden Şahit Manzaraları - I - tag:blogger.com,1999:blog-7538492.post-1940559228991742784 - http://blog.demir.web.tr/2008/10/lkemden-ahit-manzaralar-i.html + Tonguç Yumruk: Eve gitsem de güzel müzikler dinlesem + http://tonguc.name/blog/net/sazlamesai.html + http://tonguc.name/blog/net/sazlamesai.html - ]]> -Dikkat: Gerçek Bir Olaydır!<br /><br /><br />40 yaşlarında bir adam, 1 yaşını henüz doldurmuş çocuğu için dışarı süt almaya çıkmıştır. Mahallede bir bağrışma duyar, yaklaşır. Bir kavga gürültü vardır, olay biterken jandarma sorar: "şahit misin?". "Evet" cevabını veren adam o akşam evine dönemez. O akşam nezarethanede kalır, ertesi gün cezaevine gönderilir. Anlamamıştır, şahit olmaya gelmişti sadece. 45 gün sonra duruşma var derler, 45 gün cezaevinde kalmak zorundadır. 45 gün sonra da heyecan içinde çıkacağını düşünmektedir, ne de olsa sadece şahit olmaya gelmişti. Ve mahkeme günü gelip çatmıştır, çıkıp çocuklarını görecektir artık. Zaten, cezaevindeki görüşlerde de karısına, "çocuklara dikkat et" deyip durmuştu, özlemişti anlaşılan. Ama, o gün hakim mahkemeyi 1 ay erteler. Özlemle sarılma umutları bir anda sönmüştür Sebepsiz yere 1 ay daha 4 duvar arasında yaşamak zorunda kalacaktır. - Paz, 19 Eki 2008 16:44:00 +0000 + ]]> +<p>...diyorsanız, ama ne dinleyeceğinizi bilemiyorsanız işte size bunun için güzel bir <a href="http://sazlamesai.net">ortam</a>. Bu site tamamen &quot;Yahu bu albüm güzelmiş, blog'a yazmalı&quot; diyipte yazamadığım günlerin neticesinde ortaya çıkmış bir ortam. Her türlü arıza veya öneri için tongucyumruk &lt;salyangoz&gt; fazlamesai.net adresinden kontak kurmak mümkün tabii. Kod mu? Kod da yakında açılıyor. Bizi izlemeye devam edin.</p> + Per, 23 Eki 2008 22:47:56 +0000 - Serkan Kaba: Bazaar sürüm kontrol sistemi - http://serkank.wordpress.com/?p=132 - + Murat Hazer: Agile Yazılım Geliştirme ve Scrum + tag:blogger.com,1999:blog-10228790.post-6445327791230505252 + http://mhazer.blogspot.com/2008/10/agile-yazlm-gelitirme-ve-scrum.html - ]]> -Daha önce sadece Java-Gnome projesine yama (Bazaar terminolojisiyle bundle) göndermek için kullandığım Bazaar&#8216;ı bu haftasonu deneme fırsatım oldu. Uzaktaki bir arkadaşım ile basit bir proje üzerinde çalışacaktık. Ne kadar basit olsa bile klasik yöntemlerle çalışsak aramızda ya email ile sürekli kod gidip gelecek ya da en iyi ihtimalle FTP sunucusu üzerine yazarak kodlarımızı paylaşacaktık. CVS, [...] - Paz, 19 Eki 2008 09:34:01 +0000 +Hepimiz içinde bulunduğumuz projelerde çeşitli sorunlarla karşı karşıya kalıyoruz. Bu sorunlar projelerin zamanında bitirilememesine, müşterinin isteklerine uymayan yazılımlar üretilmesine ve hatta projelerin başarısız olmasına bile sebep olabiliyorlar. Ben kişisel olarak projelerin gidişatına ciddi etkilerde bulunan sorunların kaynağının geleneksel yazılım geliştirme süreçleri olduğunu düşünüyorum. İşte bu yazımda başlıktan da anlaşılabileceği gibi yazılım geliştirme süreçlerinden kaynaklanan sorunlara çözüm olarak üretilen Agile Yazılım Geliştirme'den ve Scrum'dan kısaca bahsedeceğim.<br /><br />Projelerde karşılaştığım sorunlardan konumuza uygun olanları şu şekilde sıralayabilirim;<ul><li> teknolojinin çok hızlı gelişmesi ve bu yeniliklerin projeye uygulanamaması</li><li>müşterilerin proje başlangıcında büyük resmin tamamını yani bütün gereksinimleri ortaya koyamamaları</li><li> müşterilerin gereksinimlerinin çok çabuk ve sık değişmesinden dolayı müşterilerin güncel ihtiyaçlarına cevap veremeyen bir yazılım ortaya çıkması<br /></li><li> projelerin yönetiminin gittikçe daha zor ve karmaşık hale gelmesi (bir yazılım geliştirme sürecinde 102 ayrı role'un olduğunu duymuştum)</li></ul> Dünyanın her köşesindeki yazılım geliştirme takımı gibi bu sorunlarla karşılaşan 17 profesyonel Amerika'nın Utah eyaletinde çözüm üretebilmek, müşteri memnuniyetini arttırabilmek ve başarısız olan projelerin oranını düşürmek için 2001 yılının Şubat ayında bir araya geliyorlar ve aşağıdaki manifestoyu ortaya koyuyorlar;<blockquote><br /><span>The Agile Manifesto</span> <span>We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:</span><br /><br /><span>• Individuals and interactions over processes and tools</span> <span><br />• Working software over comprehensive documentation</span> <span><br />• Customer collaboration over contract negotiation</span> <span><br />• Responding to change over following a plan</span> <span><br /><br />That is, while there is value in the items on the right, we value the items on the left more.</span> <span><br /><br />Copyright 2001, the Agile Manifesto authors</span><br /><br />(daha fazla bilgi için <a href="http://www.agilemanifesto.org/">agilemanifesto.org</a>)<br /><br /></blockquote>Manifestonun açıkca belirtiği gibi Agile geliştirme sürecinin amacı; plan, dökümantasyon, proses ve araçlardan ziyade müşteri memnuniyeti, çalışan yazılım, uyumlu yazılım geliştirme takımı ve müşteri isteklerinde oluşan değişikliklere göre kısa zamanda geliştirilebilecek yazılımlar üretmek (buradan Agile yazılım geliştirmenin plansız, dökümansız yazılım geliştirmeyi teşvik ettiği sonucuna varmamak gerekiyor çünkü Agile yazılım geliştirme sadece bunlardan daha önemli kavramların olduğunu vurguluyor). "Agile yazılım geliştirme" süreçlerin, dökümanların ve dizaynların proje başlangıcında tümüyle tanımlanmasını değil, geliştirme aşamasında karşılaşılan ve değişen koşullara göre gerekli kararların verilmesi gerektiğini savunuyor.<br /><br />Scrum'u Agile yazılım geliştirme metodunun yukarıda bahsettiğimiz presiplerine uygun olarak geliştirilmiş ve tasarlanmış bir metod olarak tanımlayabiliriz. (Diğer metodlardan XP ve Lean Software Development hakkında detaylı bilgilere <a href="http://en.wikipedia.org/wiki/Extreme_Programming">buradan</a> ve <a href="http://en.wikipedia.org/wiki/Lean_software_development">buradan</a> ulaşabilirsiniz). Scrum diğer agile yöntemleri gibi çok fazla kuralı olmayan, sadece belirli prensipleri olan ve kolayca projelere uygulanabilecek bir yöntem.<br /><br />Scrum'un genel akış şeması;<br /><br /><a href="http://www.scrum-master.com/processguidance/v2/Images/diagram.jpg"><img src="http://www.scrum-master.com/processguidance/v2/Images/diagram.jpg" alt="" border="0" /></a><br />Scrum'ı sadece yazılım geliştirmek için değil hayatta karşılaşabileceğiniz her türlü olaya uygulanabilecek bir yöntem olarak düşünebilirsiniz. Şimdi kısaca yukarıdaki şemada geçen kavramları genel bir Scrum planlaması ve akışı içinde adım adım anlatmaya çalışacağım.<br /><br />1- Roller (Roles)<br /><br /><ul><li> Ürün Sahibi (Product Owner)</li><li> Scrum Yöneticisi (Scrum Master)</li><li> Takım Üyesi (Team Member)</li></ul><br />2- Toplantılar (Meetings)<br /><br /><ul><li> Sprint Planlama (Sprint Planning)</li><li> Sprint gözden geçirme (Sprint Review)</li><li> Günlük Scrum toplantısı (Daily Scrum)</li></ul><br />3- Kavramlar (Artifacts)<br /><br /><ul><li> Ürün gereksinim dökümanı (Product Backlog)</li><li> Sprint dökümanı (Sprint Backlog)</li><li> Sprint kalan zaman grafiği (Burndown Chart)</li></ul><br />Projenin başlangıç adımı olarak yazılım gereksinimlerinin (requirements, features) <b>ürün sahibi</b> tarafından ü<b>rün gereksinim dökümanı</b>na yazılmasını düşünebiliriz. Bu dökümanın sahibi <b>ürün sahibi</b>dir ve gereksinimleri önceliklerine (priority) göre sıralar. <b>Ürün sahibi</b> bu dökümana yazılım geliştirme süresince eklemeler ve çıkarmalar yapıp öncelikleri değiştirme hakkına sahiptir. Böylece <b>ürün sahibi</b> değişen ihtiyaçlarına uygun olarak bir yazılıma sahip olma şansını yakalamış olur.<br /><br />Gereksinimler belirlendikten sonra yazılım geliştirme takımı <b>Sprint planlama toplantısı</b>nda bir sonraki Sprint'de geliştirilmek üzere <b>ürün gereksinim dökümanı</b>ndan <b>ürün sahibinin</b> belirlediği yüksek öncelikli gereksinimleri seçerek <b>Sprint dökümanı</b>na aktarırlar. Bu toplantıya <b>Scrum yöneticisi</b>, <b>ürün sahibi</b> ve <b>takım üyeleri</b> katılırlar ve Sprint süresi en az 2 en fazla 4 hafta olarak belirlenir.<br /><br /><b>Sprint planlama toplantıları</b>nı <b>Scrum yöneticisi</b> yönetir. <b>Scrum yöneticisi</b>nin asıl görevi Scrum'un temel prensiplerinin projeye uygulanmasını, bu prensiplerin <b>takım üyeleri</b>nce doğru şekilde anlaşılmasını sağlamaktır. En önemli görevi ise Sprint süresince takımı dışardan gelebilecek etkilere karşı korumak ve takımın ihtiyaçlarını karşılamaktır.<br /><br />Scrum her Sprint'in sonunda mutlaka <b>ürün sahibi</b>ne kullanabileceği bir yazılım sağlamayı hedefler, bundan dolayı planlanan Sprint süresi (2-4 hafta) asla uzatılmaz. Fakat eğer bir gereksinim belirlenen Sprint süresi içerisinde gerçekleştirilemeyecekse bir sonraki Sprint'e aktarılabilir. Ve aynı şekilde eğer Sprint süresi bitmeden <b>Sprint dökümanı</b>ndaki gereksinimlerin hepsi tamamlanmışsa <b>ürün gereksinim dökümanı</b>ndan yeni gereksinimler <b>Sprint dökümanı</b>na aktarılabilir.<br /><br /><b>Sprint planlama toplatısı</b>nda belirlenen gereksinimler <b>takım üyeleri</b>nce küçük görevlere (tasks) bölünerek takım üyelerine geliştirilmek üzere atanır. Scrum takımı geleneksel yazılım geliştirme süreçlerinden farklı olarak kesin rollere (architect, tester, developer, disagner vb.) sahip değildir. Scrum takımındaki bütün üyeler çapraz görevlerde yer alabilirler, böylece kodun tek bir kişiye bağımlılığı riski ortadan kaldırılmış olur. <b>Sprint dökümanı</b>nın sahibi bu sefer ürün sahibi değil yazılım geliştirme takımıdır, dolayısıyla bu dökümana <b>ürün sahibi</b> değil <b>takım üyeleri</b> katkıda bulunurlar.<br /><br /><b>Sprint dökümanı</b>na aktarılan gereksinimlerin tahmini geliştirme süresi saat bazında <b>takım üyeleri</b>nce belirlenir ve Sprint boyunca sürekli olarak tahmini bu zamanlar güncellenerek <b>Sprint kalan zaman grafikleri</b> (burndown chart) oluşturulur. Böylece Sprint süresince <b>ürün sahibi</b> ve <b>scrum yöneticisi</b> Sprint'in genel gidişi hakkında bilgi sahibi olur, aynı zamanda <b>takım elemanları</b> da kalan iş sürelerini ve harcadıkları zamanı takip edebilirler.<br /><br />Scrum'un belki de verimliliği artıran en önemli kavramlarından biri de <b>günlük Sprint toplantıları</b>dır. Bu toplantılar her gün belirli saatlerde farklı bir <b>takım üyesi</b>nin liderliğinde ayak üstü yapılır ve en fazla 15 dakika sürer. Bu toplantılarda her takım üyesi şu 3 soruya cevap verir;<br /><br /><ul><li>Dün ne yaptım?</li><li>Bugün ne yapacağım?</li><li>Önümde olan engeller ve karşılaştığım sorunlar neler?</li></ul><br />bu toplatılara herkesin zamanında ve davet edilmeden katılması ve uzun sürmemesi çok önemlidir. Bu toplatılar sayesinde <b>takım üyeleri</b>nin her biri diğer üyelerin nelerle uğraştığını öğrenme fırsatını edinirler ve çalışacakları işleri diğerleriyle paylaştıkları için işlerine daha iyi konsantre olabilirler.<br /><br />Her Sprint'in bitiminde ortaya konulan ürün hakkında geri besleme alabilmek için yazılımla alakalı her türlü kişiye (Ürün sahibi, pazarlama, diğer takımlar vs.) açık <b>Sprint gözden geçirme toplantısı</b> yapılır. Bu toplantının amacı yazılımın <b>ürün sahibinin</b> gereksinimlerine uygun olarak geliştirildiğinden emin olmaktır. Bu sayede müşterinin gereksinimleri bir şekilde yanlış anlaşılmış ise bu farkedilir ve bir sonraki Sprint'de bu hataların önüne geçilir.<br /><br />Bu adımlar <b>ürün sahibi</b>nin <b>ürün gereksinim dökümanı</b>na yazdığı, zaman içinde geliştirip, değiştirdiği gereksinimler bitene kadar tekrarlanır.<br /><br />Umarım burada anlattıklarım Agile ve Scrum hakkında bir fikir sahibi olmanızı sağlamıştır. Özellikle Scrum'un projelerinizdeki başarı oranlarını ve kişisel olarak verimliliğinizi arttıracağına inanıyorum. Scrum ve Agile ilgili deneyimlerinizi ve sorularınızı paylaşabilirseniz sevinirim.<br /><br />Scrum ile ilgili daha detaylı bilgilere aşağıdaki linklerden ulaşabilirsiniz.<br /><br />Kaynaklar:<br /><a href="http://agilemanifesto.org/">http://agilemanifesto.org/</a><br /><a href="http://www.pragprog.com/titles/pad/practices-of-an-agile-developer">http://www.pragprog.com/titles/pad/practices-of-an-agile-developer</a><br /><a href="http://en.wikipedia.org/wiki/Agile_software_development">http://en.wikipedia.org/wiki/Agile_software_development</a><br /><a href="http://www.ibm.com/developerworks/rational/library/08/0701_ellingsworth/">http://www.ibm.com/developerworks/rational/library/08/0701_ellingsworth/</a><br /><a href="http://scrum-master.com/en/default.aspx">http://scrum-master.com/en/default.aspx</a><br /><a href="http://www.scrumalliance.org/">http://www.scrumalliance.org/</a> + Per, 23 Eki 2008 22:47:53 +0000 - Enver Altın: A brave new world - http://enveraltin.com/1910080354 - http://enveraltin.com/blog/1910080354.html + Erol Soyöz: Mercurial + http://www.soyoz.com/gunce/mercurial + http://www.soyoz.com/gunce/mercurial -<p>End of an era marks the beginning of another one. With enormous sculpted success standing right behind me, I've recently quit <a href="http://www.cellenity.com/">Cellenity</a> to <a href="http://www.construia.com/">explore</a> what else the future has to offer.</p> -<p>On the way back home I stumbled upon the tail of this guy:</p> -<p align="center"><img src="http://enveraltin.com/img/kayserili.jpg" /></p> -<p>I spent the time and fuel that I'd normally be wasting around rush-hours Istanbul traffic on shows like Cebit Eurasia and Autoshow. Quick sum: Cebit is incrementally better every year, but Autoshow was spectacular. I've had the privilege to peek inside the Megane Coupe Concept, I shook hands with a member of the team who designed Sakarya University's 100% solar-cell racing car. Although fun, the rest was usual: short skirts, leg ladies, inefficient internal combustion engines, ugly car designs, little-to-no steps forward in evolution of transportation. Hybrids and electric vehicles receiving more attention was encouraging.</p> -<p>What comes next, I'll be blogging.</p> - Paz, 19 Eki 2008 07:54:00 +0000 - - - Murat Hazer: JBoss Seam kitapları .... - tag:blogger.com,1999:blog-10228790.post-3602928580930794976 - http://mhazer.blogspot.com/2008/10/jboss-seam-kitaplar.html - -Bir önceki yazımda JBoss Seam'in klasik Java Enterprise Development (JEE)'a kazandırdığı çeviklikten, programlama modeline, metodolojisine getirdiği <a href="http://solutionsfit.com/blog/2008/09/29/seam-and-web-beans-not-just-evolutionary-revolutionary/">devrim</a> niteliğindeki özelliklerinden bahsetmeye çalıştım. Yeni bir teknoloji öğrenmenin en iyi yolunun o konu hakkında yazılmış kaliteli kitap(lar)ı okumak olduğunu düşünenlerdenim. Bu yazımda da Seam hakkında yazılmış kitapları ve bu kitaplar hakkındaki düşüncelerimi paylaşmaya çalışacağım.<br /><br /><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPeoZaWnNaI/AAAAAAAAAZU/dAIV-io6JuA/s1600-h/seaminaction.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPeoZaWnNaI/AAAAAAAAAZU/dAIV-io6JuA/s200/seaminaction.jpg" alt="" id="BLOGGER_PHOTO_ID_5257856244502705570" border="0" /></a>"<a href="http://www.manning.com/dallen/">Seam in Action</a>" Seam'i en kapsamlı şekilde anlatan, okunması rahat ve bol örnekleri olan bir kitap. Manning yayınevinin diğer kitapları gibi bu kitap da oldukça kaliteli ve çok iyi edit edilmiş. Bu kitabı <a href="http://www.manning.com/about/meap.html">Early Access</a> seviyesinden beri takip ediyorum ve her sayfasından yeni bir şeyler öğrendim diyebilirim. Ayrıca referans kitabı olarak kullanılabilecek şekilde kapsamlı olduğu için başucu kitabı niteliğinde. Fakat kitap Seam'e ilk başlayanlar için biraz ağır gelebilir onun için biraz deneyim kazanıldıktan sonra okunmalı. (5/5)<br /><br /><br /><br /><hr /><br /><a href="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPesnXwmmnI/AAAAAAAAAZk/F7WdXGU1WHc/s1600-h/9781590597927.gif"><img src="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPesnXwmmnI/AAAAAAAAAZk/F7WdXGU1WHc/s200/9781590597927.gif" alt="" id="BLOGGER_PHOTO_ID_5257860882371091058" border="0" /></a>Apress yayınevinden çıkan "<a href="http://www.apress.com/book/view/1590597923">Beginning JBoss Seam</a>" özellikle yeni başlayanlar için çok yararlı diyebilirim. Özellikle Seam'in getirdiği yeniliklerden Bijection ve Web Conversation kavramının temellerini başarılı ve kolay anlaşılır bir şekilde anlatıyor.<br />(4/5)<br /><p><br /></p><p><br /></p><br /><br /><hr /><p></p><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetUVjXGHI/AAAAAAAAAZ0/3Lx6TlKXZl0/s1600-h/seamyuan.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetUVjXGHI/AAAAAAAAAZ0/3Lx6TlKXZl0/s200/seamyuan.jpg" alt="" id="BLOGGER_PHOTO_ID_5257861654872791154" border="0" /></a><br />Seam'in 1.x versiyonu sürecindeki geliştiricilerinden<span> Michael Juntao Yuan'ın yazarlığını yaptığı </span>"<a href="http://www.amazon.com/Seam-Framework-Experience-Evolution-JBoss/dp/0137129394/ref=pd_bbs_sr_5?ie=UTF8&amp;s=books&amp;qid=1224268151&amp;sr=8-5">JBoss Seam: Simplicity and Power Beyond Java</a>" <span> bu kitap yine Seam'e yeni başlayanlar için güzel bir kaynak. Şu anda satışta olan versiyon Seam 1.x sürümünü kapsıyor fakat yakın zamanda Seam 2.x'i kapsayan <a href="http://www.amazon.com/Seam-Framework-Experience-Evolution-JBoss/dp/0137129394/ref=pd_bbs_sr_5?ie=UTF8&amp;s=books&amp;qid=1224268151&amp;sr=8-5">yeni sürümü</a> yayınlanacak.</span><br />(4/5)<br /><p><br /></p><p><br /></p><hr /><p></p><br /><a href="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPetE5TUo6I/AAAAAAAAAZs/8mum2kwv43c/s1600-h/practical.gif"><img src="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPetE5TUo6I/AAAAAAAAAZs/8mum2kwv43c/s200/practical.gif" alt="" id="BLOGGER_PHOTO_ID_5257861389591290786" border="0" /></a><br />Apress yayınevinden çıkan diğer bir kitap "<a href="http://www.apress.com/book/view/1590598636">Practical JBoss Seam Projects</a>". Henüz bu kitabı okumaya zamanım olmadı fakat okuma listemde üst sıralarda. Okuyan arkadaşlar fikirlerini paylaşabilirlerse çok sevinirim.<br />(?/5)<br /><p><br /></p><p><br /></p><p><br /></p><hr /><p></p><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetuBU4CAI/AAAAAAAAAZ8/q5Qb_toS_qI/s1600-h/hibernateinaction.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetuBU4CAI/AAAAAAAAAZ8/q5Qb_toS_qI/s200/hibernateinaction.jpg" alt="" id="BLOGGER_PHOTO_ID_5257862096119924738" border="0" /></a><br />Seam'in ve Hibernate'in yaratıcısı olan Gavin King'in yazarlığını yaptığı "Java Persistence with Hibernate"'in son ünitesi Seam'e ayrılmış. Seam'in ortaya çıkış sürecini ve temel özelliklerini yaratıcısının kaleminden okumak isteyenler mutlaka göz atmalılar.<br />(5/5)<br /><p></p> - Cum, 17 Eki 2008 19:32:05 +0000 - - - Ahmet Yıldız: Geri Sayım Başladı - http://www.bugunlinux.com/?p=118 - http://www.bugunlinux.com/?p=118 - -<p></p> - Prş, 16 Eki 2008 21:50:18 +0000 - - - Fatih Arslan: Bardağın yarısı boş mu yoksu dolu mu? - http://blog.arsln.org/?p=537 - http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/ - -<p>Bur meşhur <a href="http://en.wikipedia.org/wiki/Is_the_glass_half_empty_or_half_full%3F">sorunun</a> bir çok cevabı var. Msn iletisinde şunları yazmıştı geçen bir arkadaşım:<br /> -<strong><br /> -To the optimist, the glass is half full.<br /> -To the pessimist, the glass is half empty.<br /> -To the engineer, the glass is twice as big as it needs to be.<br /> -</strong><br /> -Benim çok hoşuma gitmişti. Aklıma takılmış olacak ki web&#8217;de oradan oraya zıplarken bir yerde şu harika cümleyi gördüm:<br /> -<strong><br /> -The physicists say the glass is neither. It is completely full, half with water, the other half with air.</strong></p> -<p>Ardından bugün okulda arkadaşımı gördüm ve bunu söylemiştim. Sonra başardık konuşmaya, başkaları ne derdi acaba diye düşünüyorken kendi aramızda, ben de o arada atladım ve &#8220;<em>Filizof ne derdi ? </em>&#8221; diye sordum Biraz sessizlik oldu, düşünürken şunu deyiverdim:</p> -<p><strong>Hangi bardak ? </strong></p> -<p>Bu da böyle bir anımdı bugün. Bu bardağın yarısı boş mu dolu mu sorusu bu arada bilimsel olarak kullanılan bir metotmuş. Adı da <a href="http://en.wikipedia.org/wiki/Litmus_test_(politics)">Litmust Testi</a>. Psikoloji&#8217;de bir insanın en basitinden <strong>iyimser</strong> mi <strong>kötümser</strong> mi düşündüğünü belirtmek için yarıyormuş. Bu yöntem ile çok farklı düşünen insanları da görmek mümkün oluyor , örneğin yukarıdaki <strong>mühendis</strong> örneği gibi.</p> -<p>Bu testi farklı amaçlarla da kullanabiliyoruz, örneğin bir bardaki barmen-müşteri <a href="http://de.wikipedia.org/wiki/Wikipedia:Humorarchiv/Halb_voll_oder_halb_leer%3F">ilişikisi</a>. <strong>Barmen</strong> bardağı her zaman tam dolu, yarı dolu, çeyrek dolu,&#8230; şeklinde görüyor etrafı, fakat bardaki müşteriler için tam tersi, onlar tam boş, yarım boş, çeyrek boş,&#8230; şeklinde görüyorlar etraftaki bardakları. </p> - <p></p> - <hr noshade="noshade" /> - <small><p>Copyleft - Fatih Arslan - <a href="http://blog.arsln.org">Arslanlar Şehri</a>, 2008. | - <a href="http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/">Permalink</a> | - <a href="http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/#comments">Yorum(0)</a></p></small> - Prş, 16 Eki 2008 21:00:40 +0000 - - - Necdet Yücel: Akademik Bilişim 2009 - tag:blogger.com,1999:blog-20350364.post-2201886036335522812 - http://nyucel.blogspot.com/2008/10/akademik-biliim-2009.html - - ]]> -XI. Akademik Bilişim Konferansı bu yıl Şanlıurfa'da Harran Üniversitesinde <a href="http://ab.org.tr/">yapılacak</a>. Yakında Akgül Hocanın <em>aktif katılım çağrısı</em>nı alırsınız ama ben şimdiden haber vereyim dedim.<br /><br />Her yıl olduğu gibi bu yıl da Konferans düzenlenmeden önce ev sahibi üniversitede bir toplantı yapılacak; 31 Ekimde Harran'da olacağız. Nereye gideceğiniz konusunda fikriniz olsun diye fotoğraflar eklerim ;) - Prş, 16 Eki 2008 20:31:56 +0000 - - - LKD YK: Eylül Ayı Üye Bülteni Yayınlandı - http://gunluk.lkd.org.tr/yk/?p=148 - http://gunluk.lkd.org.tr/yk/2008/10/16/eylul-ayi-uye-bulteni-yayinlandi/ - -<p>Linux Kullanıcıları Derneği’nin yapmış olduğu çalışmaların konsantre bir şekilde anlatıldığı aylık bülteni bu kez Eylül ayı için dernek üyelerimizden Seyfi Genç hazırladı. Bülten tüm üyelerimizin e-posta adreslerine gönderildi.</p> -<p>Gönderim sırasında Temmuz ayında olduğu gibi ufak çaplı bir kaza da yaşadık, e-postalara Reply-To yerine yanlışlıkla BCC (gizli karbon kopya) satırı eklenmesi nedeniyle yönetim kurulu listesinin moderatörleri Alper ve Doruk&#8217;un posta kutularına bir anda 1000′e yakın e-posta doldu&#8230; Neyse en azından bu sefer liste arşivleri kurtuldu :) (züğürt tesellisi)</p> - Prş, 16 Eki 2008 20:02:32 +0000 - - - Hakan Uygun: Google Chrome, Özgür Yazılım ve Amerikan Ticaret Kanunları - http://www.hakanuygun.com/blog/?p=132 - http://www.hakanuygun.com/blog/?p=132 - -<p><a href="http://www.webrazzi.com/2008/10/15/google-suriye%e2%80%99-de-chrome-kullanimini-engelledi/">webrazzi</a>&#8216;den okuduğum habere göre Google Chrome uygulamasını Suriye, İran ve Amerikan Ticaret Kanunu&#8217;na göre ambargolu bir çok ülkeden indirilmesine kapatmış. Gene aynı haber içerisinde Google&#8217;ın Adsense için her hangi bir yaptırım uygulamadığı söyleniyor. Yazıda ticari bir hizmetin kapatılmayıp, ücretsiz bir yazılımın kapatılması üzerinde duruluyor&#8230;</p> -<p>Bense başka bir noktaya takıldım. Özgür yazılım lisanslarının Ticaret Kanunları çerçevesinde nasıl değerlendirileceği.</p> -<p>Sonuç ürün üzerinde Amerikan Ticaret kanunları çerçevesinde bir ambargo söz konusu olabilir, sonuçta Google bir pazar olarak Amerika ve kanunlarla uğraşmak yerine zaten bir pazar olarak görmediği ülkeler için ambargoyu uygular. Kaynak kodlara ulaşılması, derlenmesi ve ilgili kanunların geçerli olmadığı başka ülkeler üzerinden tekrar yayınlanması ise engellenemez. Tam bu noktada düşündüğüm ise çeşitli kanunlarla özgür yazılım ürünü kaynak kodlarımızında yasaklanması söz konusu olabilir mi? Son durumunu bilmiyorum ama bir dönem Amerikan kanunları nedeniyle şifreleme algoritmaları açısından bir dolu sorun yaşanıyordu&#8230;</p> -<p>Bir de aklıma takılan acaba Amerika tarafından ambargolu ülkeler acaba bir fork yaparlar mı? <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p> -<p>Aslında, dünyanın bu kadar küçüldüğü, sınırların bu kadar belirsizleştiği bir ortamda bir şeylerin kanunlarla sınırlandırılmaya çalışılması konusunda sorulacak o kadar fazla soru ve tartışılacak konu var ki&#8230;</p> - Prş, 16 Eki 2008 18:06:04 +0000 +PHPMagazine'de, CVS, SVN v.b kaynak kod yönetim araçları yerine, daha gelişmiş ve basit olan Mercurial'in kullanımına teşvik etmek için bir yazı hazırlanmış. Okunabilir de, okunduktan sonra uygulanabilir de. + Per, 23 Eki 2008 22:47:12 +0000 Nesimi Acarca: QTicari Beta-1 @@ -150,15 +76,283 @@ Projeye destek olmak i&ccedil;in :&nbsp; </strong></p> <a target="_blank" href="http://forums.nesimia.com/index.php?5">http://forums.nesimia.com/index.php?5</a> adresine tıklayın.<br /> <strong><br /> </strong></p><img src="http://feeds.feedburner.com/~r/nesimia-gezegen/~4/422423188" height="1" width="1" /> - Prş, 16 Eki 2008 08:21:21 +0000 + Per, 23 Eki 2008 22:47:10 +0000 - Bora Güngören: Yine güzel bir blog - http://blogs.portakalteknoloji.com/bora/blog/2008/10/16/201/ - http://blogs.portakalteknoloji.com/bora/blog/2008/10/16/201/ + Ali Erkan İMREK: Pardus'a katkı yapmak + tag:blogger.com,1999:blog-6806075996663386433.post-31707385912243488 + http://armuting.blogspot.com/2008/10/pardusa-katk-yapmak.html -<p>Bugünlerde sosyal ağlarda bir şeyler ararken (evet aranabiliyor) tematik blogu olanlar daha da çok dikkatimi çekiyor. Bu sefer de çok güzel bir <a href="http://pazarlamacigiremez.blogspot.com/">pazarlama blogu</a> dikkatimi çekti. </p> - Prş, 16 Eki 2008 00:09:00 +0000 +<div><a href="http://linuxfoooka.files.wordpress.com/2007/08/linux-penguin-we-are-free-and-legit-now-no-worry-150807.jpg"><img src="http://linuxfoooka.files.wordpress.com/2007/08/linux-penguin-we-are-free-and-legit-now-no-worry-150807.jpg" alt="" border="0" /></a>Pardus, 2007 sürümüyle beraber geniş kitlelere ulaşmayı başarabildi, ben 2008 sürümünün, 2007'den 2007.3'e kadar olan yükselen kalite ivmesini devam ettiremediğini düşünüyorum ama bu kullanıcı kitlesinin genişlemesini etkilemedi. Bunda mevcut kullanıcıların Pardus ile bir gönül bağı kurmuş olduğunu ve yeni kullanıcılar açısından da Ulusal Dağıtım fikrinin çekiciliğinin önemli rol oynadığını düşünüyorum. Bu kadar hızlı büyüyen bir toplulukta da projeye katkı yapmak isteyen her seviyeden kullanıcı olması beklenen bir durumdur.<br /></div><div><br />Kullanıcıların az bir kısmının Linux konusunda tecrübeli ve yetkin kişilerden oluştuğu büyük çoğunluğunda AWB (Ağır Windows Bağımlılığı) olan kullanıcılar olduğu forum ve e-posta listelerinden anlaşılıyor. Bu çoğunluğun belgelendirme, çeviri ve hata raporlama konusunda planlı bir şekilde bilinçlendirilmesi gerektiğini düşünüyorum. AWB'den dolayı bu durumdaki kullanıcıların pek çoğu Linux dağıtımlarını birilerinin bir yerlerde kendi halinde kodladığı kendisinin de sadece inidirp kurup kullanacağı bir sistem olarak görüyor. Katkı konusunu da program yazmak olarak anlıyor. Bu konuda wiki sayfalarında belgeler var isteyen gider okur denilebilir ancak ben wiki sayfalarını sadece ne aradığını ve nerede bulacağını bilen kişilerin okuduğunu düşünüyorum. Bu durumda Pardus ekibince kullanıcılara tek adres olarak gösterilen özgürlükiçin sitesinin "Katkı" konusunda yol gösterici, bilinçlendirici ve özendirici yeni bölümleri ve projeleri olması gerektiğini düşünüyorum. Özgürlükiçin bugüne kadar hep içeriden dışarıya bir bilgi akışını sağlama yönünde gelişti, en son "Beyin" projesiyle dışarıdan içeriye akışı sağlayan bir gelişme sağlandı. Artık bundan sonraki adımların özelde "Katkı" konusunda ve genelde dışarıdan içeriye yönelik olması gerekiyor.<br /><br />Bunları yazmama neden olan şey aslında ileri seviye bir kullanıcının aşağıdaki adreste gördüğüm pisi paketleri [1] , bu arkadaş Pardus'u kullanmış, kullanmakla kalmamış katkı da yapmış. Ama bu paketleri Pardus deposu yerine kişisel sayfasında yayınlamış. Acaba neden Pardus deposuna girmemiş, katkı için başvurmamış mı? başvurmak istemiş bilgi mi bulamamış? geri mi çevrilmiş? diğer dağıtımlar için yaptığı paketlere bakınca Pardus için de iyi bir katkıcı olabileceğini ama neden Pardus'un bu kişiyi kazanamadığını merak ettim. Daha korkunç bir soru acaba bu kişi gibi kendi halinde paketleme yapan kaç kişi var?<br /><br />Pardus'un bir contrib deposu var ancak bu depoya herkes paket gönderemiyor, bu konudaki teknik konuları bilmiyorum ama contrib deposunun en az temel depo kadar formalite taşıdığını ve test süecine tabi olduğunu sanıyorum. Ben resmi depolarda olmayan paketlerin bulunduğu (belki kullanıcıların kendi yaptığı programlar için) kullanımı tamamen kullanıcıların sorumluluğunda olacak testleri ve bakımı kullanıcılar tarafından yapılacak ama Pardus sunucularından hizmet verecek daha özgür bir depo hayali kuruyorum.<br /><br />Bu konuda zaten www.pardus-linux.org sitesi açtığı depo ile önemli bir adım atmıştı, ben bu depoların ve sitelerin ülkemizde ve Dünya'da daha da çoğalmasının Pardus'a her zaman fayda sağlayacağını düşünüyorum. Ama bu konularda öncülüğü Pardus ekibinin yapmasını da bekliyorum.<br /><br />Belki yazılacak daha çok şey vardır ama aklıma gelenleri hızlıca yazdım.<br /><br />[1] <a href="http://www.maccusfoto.nl/maxmenu/rpms.html">http://www.maccusfoto.nl/maxmenu/rpms.html</a><br /></div> + Per, 23 Eki 2008 12:48:48 +0000 + + + Enver Altın: The death of the dollar? + http://enveraltin.com/politics/2310080257 + http://enveraltin.com/blog/politics/2310080257.html + +<p>From BBC Business, on his corner Prof. Ngaire Woods provides a good easy-read overview of the global economic status-quo and speculates on potential consequences of redistribution of economic power following the turmoil. <a href="http://news.bbc.co.uk/2/hi/business/7684397.stm">Definitely worth reading</a>. I don't have much to say, because I agree wholeheartedly.</p> + Per, 23 Eki 2008 07:45:00 +0000 + + + Serkan Kaba: Türkçe yerel ile hatalı çalışan programlar + http://serkank.wordpress.com/?p=137 + + + ]]> +Java&#8217;da daha önce pek çok kez karşılaştığım bir hatayı Python ile yazılmış olan Bazaar&#8217;da da yaşayınca buraya yazmak istedim. Java ve muhtemelen Python da büyük küçük harf çevrimlerinde aktif yerelin özelliklerini dikkate alıyor. Ancak bunun gerekmediği hatta istenmediği durumlar olabiliyor. Bunlara örnek olarak kod üreticiler verilebilir. Türkçe&#8217;deki I-&#62;ı ve i-&#62;İ çevrimi nedeniyle bazı programlar hatalı [...] + Per, 23 Eki 2008 07:00:30 +0000 + + + Bora Güngören: Mac OS X'de GCC kurulumu + http://blogs.portakalteknoloji.com/bora/blog/2008/10/23/204/ + http://blogs.portakalteknoloji.com/bora/blog/2008/10/23/204/ + +<p>2000-2001 dönemlerinde Apple'ın kendisi de derleyici olarak GCC kullanmaya başladığı için Mac OS X'de GCC kurmak oldukça kolay bir şey. Yapmanı gereken ilk şey <a href="http://connect.apple.com/">Apple Developer Connection</a> sitesine üye olmak. Burada geleneksel bir form dolduruyorsunuz. Apple'ın merak ettiği önemli bir şey herhangi bir üniversitede öğrenci durumunuz olup olmadığı. Arkasından geliştirici olarak ne yaptığınızı soran çok basit ve çok hoşuma giden bir anket hazırlamışlar. Programlama dili ve benzeri detaylara hiç girmemişler. Kimin için, hangi tür yazılımları hangi işletim sistemlerinde yazdığınızı öğrenmek onlara yetiyor. </p> +<p>Bir kez Apple Developer Connection (ADC) üyesi olunca, çok çeşitli araçları indirebiliyorsunuz. Bunlar arasında Mac OS X çekirdeği için hata ayıklayıcı gibi şeylerden türlü türlü SDK'lara kadar çok farklı paketler var. Elbette benim esas ilgimi çeken <a href="http://developer.apple.com/tools/xcode/">XCode</a> aracı. Yalnız dikkat edilecek bir şey var. Bu araç ekleri vs ile <strong>yaklaşık 1.2 GB boyutundaki bir paket</strong> ile geliyor. Yani tek başına GCC kurmak isteseniz dahi, önce bütün araç paketini çekmeniz sonra da kurulum sırasında sadece GCC'yi çekmeniz gerekiyor. </p> +<p>Uzun bir indirme ve bir kaç tıklama sonrasında XCode'u kurunca /usr/bin/gcc adresinde GCC kurulmuş oluyor. </p> + Per, 23 Eki 2008 03:35:00 +0000 + + + Enver Altın: Makine Mühendisleri Odası İstanbul Şubesi'nde Özgür Yazılım sohbeti + http://enveraltin.com/events/2210080418 + http://enveraltin.com/blog/events/2210080418.html + +<p><a href="http://www.mmoistanbul.org/site/Scripts/prodView.asp?idproduct=2484">Haberler</a> <a href="http://www.fazlamesai.net/?a=article&sid=5107">her yerde</a>, yeni LKD Seminer Çalışma Grubu ekibi azmetmiş, kendilerine teşekkür ediyorum.</p> +<p>Bugün, 22 Ekim saat 19:00'da Makine Mühendisleri Odası İstanbul Şubesi'nde Özgür Yazılım konusunda biraz sohbet edeceğiz. Katılım herkese açık, <a href="http://www.mmoistanbul.org/site/Scripts/prodView.asp?idproduct=2484">adres ve kayıt için gerekli bilgiler</a> MMOIstanbul.org'da.</p> + Çar, 22 Eki 2008 08:18:00 +0000 + + + Alper Kanat: Subversion, Bazaar ve GIT Üzerine.. + http://raptiye.org/blog/2008/10/22/subversion-bazaar-ve-git-uzerine/ + http://raptiye.org/blog/2008/10/22/subversion-bazaar-ve-git-uzerine/ + + ]]> +<img width="128" height="128" src="http://raptiye.org/resimler/rocket.png" alt="rocket" />raptiye'yi <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> &uuml;zerinde sunduğumu daha &ouml;nceki yazılarımdan birinde s&ouml;ylemiştim. Işık &Uuml;niversitesi Kul&uuml;pler Sunucusu'nda, <a title="parkyeri hakkında bilgi almak i&ccedil;in tıklayın.." target="_blank" href="http://www.parkyeri.com">Parkyeri</a>'nde, <a title="arch linux t&uuml;rkiye hakkında bilgi almak i&ccedil;in tıklayın.." target="_blank" href="http://www.archlinuxtr.org/">Arch Linux T&uuml;rkiye</a> projelerinde ve kendi yaptığım işlerin bir kısmında <a href="http://subversion.tigris.org/" target="_blank" title="subversion hakkında bilgi almak i&ccedil;in tıklayın..">Subversion</a> tercih ediliyor. Bunun dışında bir &ccedil;ok s&uuml;r&uuml;m y&ouml;netimi sistemi var elbet ve bunlardan en &ouml;nemlilerini (<a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a>, <a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a>) araştırdıktan sonra <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> kullanmaya karar verdim. Bu yazıda bu konuyla ilgili dikkatimi &ccedil;eken ve &ouml;nemli bulduğum şeyleri paylaşmaya &ccedil;alışacağım. Bir &ccedil;ok insanın s&uuml;r&uuml;m y&ouml;netimine kavram olarak yabancı olduklarını d&uuml;ş&uuml;nd&uuml;ğ&uuml;mden &ccedil;ok kısa bir şekilde onu da a&ccedil;ıklamak istiyorum.<br /> +<br /><br /> +<br /><span><strong>S&uuml;r&uuml;m Y&ouml;netimi Sistemleri Nedir?</strong></span><br /> +<br /><br /> +<br />İngilizce'de <strong>Version Control System</strong> (<em>VCS</em>) olarak ge&ccedil;en, dilimizde iyi anlatabilmek i&ccedil;in yukarıdaki gibi uzun olan <em>s&uuml;r&uuml;m y&ouml;netimi</em>, bazı yerlerde <em>revizyon y&ouml;netimi</em> gibi de kullanılıyor. S&uuml;r&uuml;m Y&ouml;netimi'ni, yazılımın aşama aşama geliştirildiğini d&uuml;ş&uuml;n&uuml;rsek, bu aşamaları kayıt altında tutan, istenildiğinde geri d&ouml;n&uuml;lmesine olanak tanıyan, aşamalar arasında neler olduğunu kolaylıkla g&ouml;sterebilen yazılımlar olarak &ouml;zetleyebiliriz. Geliştirici'nin hayatını kolaylaştırdığı kesin! Bu yazılımlardan neler beklendiğini maddeler halinde yazarsam sanırım daha iyi anlaşılacaktır:<br /> +<br /><ul> +<br /> <li>Kodda yapılan t&uuml;m değişimler birer revizyondur.</li> +<br /> <li>Revizyonlar arasında değişen dosyalar, dosyalardaki değişiklikler (gerekirse yama olarak) kolayca g&ouml;r&uuml;nt&uuml;lenebilmelidir.</li> +<br /> <li>Herhangi bir revizyondan sonra işler yanlış gittiyse, o revizyona kadar olan kısım geri alınıp hi&ccedil; bir şey olmamış gibi devam edilebilir.</li> +<br /> <li>Herhangi bir dosyada yapılan değişiklikler kodun geri kalanından bağımsız olarak geri alınabilmelidir.</li> +<br /> <li>Birlikte &ccedil;alışılan projelerde, diğerlerinin yaptığı değişiklikleri alabiliyor olmalı ve bunu yaparken de olabildiğince az (m&uuml;mk&uuml;nse sıfır) &ccedil;akışmaya izin vermelidir.</li> +<br /> <li>Ek maliyetler getirmemeli, hızlı ve kolay olmalıdır. M&uuml;mk&uuml;nse her platformda &ccedil;alışmalıdır.</li> +<br /></ul> +<br />T&uuml;m bunlar bir arada d&uuml;ş&uuml;n&uuml;ld&uuml;ğ&uuml;nde geliştiricinin işlerini kolaylaştıran ve hızlandıran etmenler.. Bu ihtiya&ccedil;lara cevap verebilmek adına kullanılabilir durumda bir s&uuml;r&uuml; s&uuml;r&uuml;m y&ouml;netimi yapan yazılım var. En meşhuru olan <a title="cvs hakkında bilgi almak i&ccedil;in tıklayın.." target="_blank" href="http://www.nongnu.org/cvs/">CVS</a>'in, doğal gelişim s&uuml;reci i&ccedil;inde yetersiz gelmeye başladığı ortaya &ccedil;ıkınca ortaya <a href="http://subversion.tigris.org/" target="_blank" title="subversion hakkında bilgi almak i&ccedil;in tıklayın..">Subversion</a> &ccedil;ıkmış. Şu anda bir &ccedil;ok ihtiyacı g&ouml;r&uuml;yor gibi g&ouml;r&uuml;nse de ileride yetersiz kalacağını g&ouml;renler <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>, <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> ve <a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a> gibi alternatifler geliştirmişler. Gelin; bu sistemlerin yukarıdaki maddelere ek olarak getirdiklerine bakalım:<br /> +<br /><ul> +<br /> <li>S&uuml;r&uuml;m y&ouml;netimi i&ccedil;in &ccedil;evrimi&ccedil;i olmak gerekmemeli! Teslimat (commit), Birleştirme (merge), tarih&ccedil;e gibi işlemler i&ccedil;in herhangi bir sunucuya bağlanmak gerekmemeli.. Kısaca merkezi sisteme hayır!</li> +<br /> <li>Kod tabanı dağıtık bir yapıda olabilir ve insanlar birbirlerinden değişik kısımları ya da kodun tamamını alabilirler.</li> +<br /> <li>Her kopya, s&uuml;r&uuml;m kontrol&uuml;ne ait tarih&ccedil;e vb. kritik &ouml;nem taşıyan bileşenleri barındırır.</li> +<br /> <li>Her kopya aslında yeni bir daldır (branch)!</li> +<br /> <li>Birleştirme işlemi acı vermeyen, s&uuml;rekli yaptığımız; hatta zevk veren bir işlem olmalıdır!</li> +<br /> <li>&Ccedil;evrimdışı &ccedil;alışma = hız!</li> +<br /> <li>B&uuml;y&uuml;k şirketlerde sık&ccedil;a rastlanan &quot;kod &ccedil;alışana ve t&uuml;m testleri ge&ccedil;ene kadar teslim edemezsin!&quot; mantığı y&uuml;z&uuml;nden t&uuml;m değişikliklerin tek ve kocaman bir yama olarak g&ouml;nderilmesi sorunlara yol a&ccedil;abiliyor. Bunun yerine yerel ve k&uuml;&ccedil;&uuml;k k&uuml;&ccedil;&uuml;k teslimatlar yapabilir; daha sonra değişiklikler ana sunucuya teslim edilebilir hale geldiğinde her değişiklik birer revizyon olacak şekilde ana sunucuda yerini alır. B&ouml;ylece yapılan b&uuml;y&uuml;k bir değişiklikte bile atomik değişiklikler geri alınabilir ve rahatlıkla d&uuml;zeltilebilir.</li> +<br /></ul> +<br /><span><strong>Peki Alternatifler Neler?</strong></span><br /> +<br /><br /> +<br />Bunları ve daha fazlasını yapabilen uygulamaların bulunduğu k&uuml;meye <strong>Dağıtık S&uuml;r&uuml;m Y&ouml;netimi Sistemleri</strong> (<em>Distributed Version Control Systems</em>) deniyor. Linus Torvalds, Linux &ccedil;ekirdeğinin geliştirilmesinde kullanılan BitKeeper ile ilgili sorunlar yaşanmaya başlanınca bu konuya kendi &ccedil;&ouml;z&uuml;m&uuml;n&uuml; getirip <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> adında bir yazılım yazmış. Dağıtık S&uuml;r&uuml;m Y&ouml;netimi ve <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> hakkındaki d&uuml;ş&uuml;ncelerini paylaştığı şu video'nun epey yararlı olduğunu s&ouml;yleyebilirim.<br /> +<br /><br /> +<br /><a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a>'ı <a title="arch linux t&uuml;rkiye hakkında bilgi almak i&ccedil;in tıklayın.." target="_blank" href="http://www.archlinuxtr.org/">Arch Linux T&uuml;rkiye</a> projelerini y&ouml;netmek i&ccedil;in <a href="http://eventualis.org/" target="_blank" title="samed'in kişisel sitesi i&ccedil;in tıklayın..">Samed BEYRİBEY</a>'in &ouml;nerisiyle denemeye başladık. Başlarda fazla araştırmadığım i&ccedil;in olduk&ccedil;a yabancı gelmiş ve ısınamamıştım. Tıpkı <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> gibi &quot;commit&quot;, &quot;checkout&quot; vb. alıştığımız anahtar s&ouml;zc&uuml;kler yerine başka s&ouml;zc&uuml;kler tercih ediliyordu ve bu da kafa karıştırıcı oluyordu. <a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a>, sırf bu y&uuml;zden dumur olan insanlara kolaylık olması amacıyla bu s&ouml;zc&uuml;kleri i&ccedil;inde bulunduruyor yine de.. Bir s&uuml;re denedikten sonra bir hayli karışık geldiğinde kullanımından vazge&ccedil;tik ve b&ouml;ylece <a href="http://www.selenic.com/mercurial/wiki/" target="_blank" title="mercurial hakkında bilgi almak i&ccedil;in tıklayın..">Mercurial</a> defteri kapanmış oldu.<br /> +<br /><br /> +<br /><a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a>, şu anda bir hayli reva&ccedil;ta olan bir yazılım.. Bir &ccedil;ok &ouml;zg&uuml;r yazılım projesi tarafından tercih ediliyor ve sayıları giderek artıyor. Benim <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a>'i tercih etmememdeki en b&uuml;y&uuml;k sebepler ş&ouml;yleydi:<br /> +<br /><ul> +<br /> <li><a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> i&ccedil;erisindeki kodu sunmak i&ccedil;in bir s&uuml;r&uuml; ayarla uğraşmak istemedim.</li> +<br /> <li><a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a>'in getirdiği terminoloji &ouml;ğrenmesi zaman alacak gibiydi.</li> +<br /> <li>D&ouml;k&uuml;mantasyonu <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> kadar a&ccedil;ık ve rahat okunabilir değil.</li> +<br /> <li>Herhangi bir web servisi ile alakası yok.. (<a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>'ın LaunchPad desteği gibi..)</li> +<br /> <li>Boş dizinlerin s&uuml;r&uuml;m y&ouml;netimi i&ccedil;inde bulunamaması ve i&ccedil;ine boş birer dosya koyma zorunluluğu hoşuma gitmedi.</li> +<br /> <li>Platform bağımsız değil. Windows'da &ccedil;alışmıyor. (ya da desteği hen&uuml;z yetersiz)</li> +<br /></ul> +<br />&Ouml;te yandan araştırmamı daha &ccedil;ok <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> ve <a href="http://git.or.cz/" target="_blank" title="git hakkında bilgi almak i&ccedil;in tıklayın..">GIT</a> <a title="yazıların bir listesi i&ccedil;in tıklayın.." target="_blank" href="http://www.google.com.tr/search?q=bazaar+vs+git&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a">karşılaştırması yapan yazılar</a> &uuml;zerinde yoğunlaştırmıştım. <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>'ın hoşuma giden &ouml;zellikleri ş&ouml;yle:<br /> +<br /><ul> +<br /> <li>Kodunuzu sunmak i&ccedil;in herhangi bir sunucu kurmanıza gerek yok. Zaten varolanlar ile birlikte zaten bir hayli se&ccedil;eneğiniz var: +<br /> <ul> +<br /> <li>bzr://,</li> +<br /> <li>sftp:// (SSH),</li> +<br /> <li>ftp://, http://&nbsp;(webdav),</li> +<br /> <li>file:// (yerel dosya sistemi)</li> +<br /> </ul> +<br /> </li> +<br /> <li>D&ouml;k&uuml;mantasyonu (&ouml;zellikle anlatımı)&nbsp;ve sitesi olduk&ccedil;a etkileyici..</li> +<br /> <li>LaunchPad desteği sayesinde tek bir komutla servisle etkileşim halindesiniz.</li> +<br /> <li>Boş dizinler de (doğal olarak)&nbsp;s&uuml;r&uuml;m y&ouml;netimine dahiller.</li> +<br /> <li>Linux, Mac OS X ve Windows'da sorunsuz olarak &ccedil;alışabiliyor.</li> +<br /></ul> +<br /><a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>'la ilgili beni en &ccedil;ok etkileyen şey kodumu sunmak i&ccedil;in &ccedil;ok fazla uğraşmama gerek olmamasıydı. Varolan kodumu s&uuml;r&uuml;m y&ouml;netimi altındayken kullandığım ağ sunucusu ile sunmam yeterli! &Ouml;rneğin raptiye'nin kod tabanını nginx ile sunuyorum (<a href="http://code.raptiye.org" target="_blank">http://code.raptiye.org</a>) ve <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> kullanan bir kişi http:// protokol&uuml; &uuml;zerinden kodu dallandırabiliyor!<br /> +<br /><br /> +<br />Bir &ccedil;ok kişi <a href="http://subversion.tigris.org/" target="_blank" title="subversion hakkında bilgi almak i&ccedil;in tıklayın..">Subversion</a> kullanımına; dolayısıyla da merkezi sisteme alışık olduğundan <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a>'ı bu şekilde yapılandırıp yarı-dağıtık bir model ile kullanabilirsiniz. Uzaktaki kodu yerelinize indirip (dallandırıp) t&uuml;m değişikliklerinizi &ccedil;evrimdışı olarak kendi bilgisayarınızda yapabilir, dilediğinizce farklara bakıp, tarih&ccedil;eyle ilgili işlem yapabilir, yerel teslimatlar yapabilirsiniz. İşiniz bittiğindeyse kodun son halini sunucuya g&ouml;nderebilirsiniz. raptiye'de tek kişi &ccedil;alıştığım i&ccedil;in şu anda bu modeli sık&ccedil;a uyguluyorum. Biraz da kullanımdan &ouml;rnek verirsem daha iyi olacak sanırım..<br /> +<br /><br /> +<br />&Ouml;ncelikle kodu kendi yerelimde dallandırıyorum:<br /> +<br /><blockquote> +<br /><div><br /> +<br />bzr branch http://code.raptiye.org/raptiye/main/ raptiye</div> +<br /></blockquote> <br /> +<br />Daha sonra bir takım değişiklikler yapıp yaptıklarımı g&ouml;zden ge&ccedil;irmek i&ccedil;in şu komutu veriyorum:<br /> +<br /><br /> +<br /><blockquote> +<br /><div>bzr diff|vi -</div> +<br /></blockquote> <br /> +<br /><strong>bzr diff</strong> komutu yaptıklarımın son revizyon ile farkını g&ouml;sterirken &quot;<strong>|vi -</strong>&quot; komutu ise &ccedil;ıktıyı VI adlı edit&ouml;re y&ouml;nlendirir. Bu şekilde yaptıklarımı renkli ve daha okunabilir olarak izleyebiliyorum.<br /> +<br /><br /> +<br />Yaptıklarımdan memnun kaldım ve teslim etmek istiyorum:<br /> +<br /><br /> +<br /><blockquote> +<br /><div>bzr ci</div> +<br /></blockquote> <br /> +<br />ci komutu commit komutunun kısaltması bu arada.. Bu komut sayesinde orjinal kodun kendi yerelimdeki dalında ilk teslimatımı yapmış oldum. Bu değişiklikleri ana sunucuya atmak istersem:<br /> +<br /><br /> +<br /><blockquote> +<br /><div>bzr push</div> +<br /></blockquote> <br /> +<br />komutunu kullanmalıyım. Bu komutu ilk kez kullanıyorsanız kodun y&uuml;kleneceği yeri de belirtmelisiniz:<br /> +<br /><blockquote> +<br /><div><br /> +<br />bzr push sftp://user@domain.com/home/code/raptiye/main/</div> +<br /></blockquote> <br /> +<br />Bu noktada &ouml;nemli bir konuya değinmekte de fayda var. <strong>Performans kaynaklı sebeplerden dolayı bzr push komutu uzaktaki sunucunun yalnızca tarih&ccedil;esini g&uuml;nceller ancak kod &uuml;zerinde gerekli olan değişiklikleri yapmaz.</strong> Bu değişiklikleri yapmak i&ccedil;in sunucu &uuml;zerindeki kod tabanında <em>bzr up</em> komutunu &ccedil;ağırmalı ya da bunu sizin i&ccedil;in yapan bir eklentiyi indirip yerelinize kurmalısınız.<br /> +<br /><br /> +<br />Proje &uuml;zerinde birden fazla kişi &ccedil;alıştığında sunucu &uuml;zerinde her geliştirici i&ccedil;in bir hesap a&ccedil;mak istemeyebilirsiniz. Bu durumda ağ sunucusunda http protokol&uuml; &uuml;zerinden belli kişilere erişim izinleri tanımlayarak teslimat yaptırabilirsiniz. <a href="http://nginx.net/" target="_blank" title="nginx hakkında detaylı bilgi almak i&ccedil;in tıklayın..">nginx</a> &uuml;zerinde webdav yerine <a href="http://www.python.org/dev/peps/pep-0333/" target="_blank" title="python pep'lerinden wsgi ile ilgili bilgi almak i&ccedil;in tıklayın..">wsgi</a> ayağı kullanılıyor ancak wsgi, <a href="http://nginx.net/" target="_blank" title="nginx hakkında detaylı bilgi almak i&ccedil;in tıklayın..">nginx</a>'in geliştirilme hızına yetişemediğinden ben &ccedil;alıştırmayı beceremedim. (<a href="http://nginx.net/" target="_blank" title="nginx hakkında detaylı bilgi almak i&ccedil;in tıklayın..">nginx</a>'i, <a href="http://www.python.org/dev/peps/pep-0333/" target="_blank" title="python pep'lerinden wsgi ile ilgili bilgi almak i&ccedil;in tıklayın..">wsgi</a> desteğiyle derlemekten bahsediyorum -- wsgi tarafında yamalar var ama onlar bile eski..)<br /> +<br /><br /> +<br />Bundan sonraki projelerde <a href="http://bazaar-vcs.org/" target="_blank" title="bazaar hakkında bilgi almak i&ccedil;in tıklayın..">Bazaar</a> benim s&uuml;r&uuml;m y&ouml;netimi i&ccedil;in tercih etmeye devam ettiğim yazılım olacak. Eminim benimkini kolaylaştırdığı gibi sizlerin de hayatını kolaylaştıracaktır.<br /><div class="feedflare"> +<a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=B4IIM"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=B4IIM" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=E2cCm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=E2cCm" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=6GMNm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=6GMNm" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=zx6AM"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=zx6AM" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=b3DRm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=b3DRm" border="0" /></a> +</div> + Çar, 22 Eki 2008 01:12:45 +0000 + + + Özgürlükiçin.com: Test Takımı Sizi Çağırıyor! + http://ozgurlukicin.com/haber/test-takimi-sizi-cgriyor/ + http://ozgurlukicin.com/haber/test-takimi-sizi-cgriyor/ + +<p><img src="http://www.ozgurlukicin.com/media/upload/image/pardus-tescil.png" border="0" alt="Pardus" align="left" />Özgür yazılım süreçlerinde kullanıcıların katkı verebileceği birçok alan bulunmakta. Bu alanlar doğrudan kod yazmak ya da bileşen geliştirmek olabileceği gibi kod yazmayı bilmeyenlerin de katılabileceği pek çok işi de içeriyor. Çeviri, grafik desteği, <a href="http://hata.pardus.org.tr/">hata bildirimi</a>, belgelendirme çalışmalarının yanı sıra hem kendinizi geliştirebileceğiniz hem de Pardus'a katkı verebileceğiniz önemli bir alan daha var: Test süreçleri.<br /> <br /> Test süreçlerinde görev almak için yüksek bir bilgi gereksinime gerek yok. Bununla birlikte test süreçleri, kullanılan yazılımları daha iyi öğrenmenizi, işlevlerinden haberdar olmanızı ve bu sayede bilginizin artmasına da yardımcı olur. Test süreçlerine katılmak, aynı zamanda özgür yazılım dünyasında geliştirme süreçlerinin nasıl işlediğini görebilmek ve ilerde bir Pardus geliştiricisi olmak için de iyi bir başlangıç noktası oluşturur.<br /> <br /> Pardus Projesi'nde de tüm özgür yazılım projelerinde olduğu gibi test süreçleri son derece önemseniyor. Özgür yazılım bileşenleri her ne kadar çok sayıda geliştirici tarafından incelense de hatalar içermesi ya da bazı donanımlarla uyumlu çalışmaması olasılığı kaçınılmazdır. Pardus Geliştiricisi <strong>Serbülent Ünsal</strong>'ın liderliğini yaptığı Pardus Test Takımı ise gerek sürüm öncesi gerekse sürüm sonrası testlerle bu hataların en aza indirilmesini ve Pardus kullanıcılarının daha iyi bir bilgisayar deneyimi yaşamasını amaçlıyor.<br /> <br /> Pardus Test Takımı, test süreçlerini iki aşamada yürütüyor. Bunlardan ilki sürüm testleri. Yeni Pardus sürümleri çıkmadan önce test takımı ile paylaşılan Pardus Test ve Geliştirici Sürümleri, Test Takımı tarafından o sürüm için hazırlanan test kılavuzlarının yönlendirmesi ile test ediliyor Bu testlerin sonunda ortaya çıkacak muhtemel sorunlar Test Takımı üyeleri tarafından test e-posta listesine bildirilir ve bu bildirimler ışığında sorunların çözümü sağlanarak daha kararlı ve daha fazla donanımla uyumlu Pardus sürümlerinin kullanıcılara buluşması sağlanılır.<br /> <br /> Test Takımı'nın işi sadece sürüm öncesi testleri ile sınırlı değildir. Test Takımı, sürümlerin çıkmasını takip eden süreçte yapılan güncellemeleri de test ediyor. Bu testler sayesinde Pardus kullanıcılarının kullandığı kararlı depolara güncellemeler girmeden önce testlerinin yapılması ve güncellemelerin bir soruna yol açması durumunda bu sorunların tespit edilmesi sağlanıyor. Güncellemeler önemlerine ve sistemin kararlılığına olan etkilerine göre gruplara ayrılmış olup, bazı paketlerin güncellemeleri çok detaylı bazı paketlerin güncellemeleri ise daha az detaylı olarak test edilmektedir.<br /> <br /> Haberimizin başında da belirttiğimiz gibi, Test Takımı'na katılmak için yüksek bir bilgi birikimine ve donanım ihtiyacına gereksiniminiz yok. Bilgisayarınızda oluşturacağınız sanal makinelerle ya da test süreçlerine tahsis edeceğiniz bir bilgisayar ile test takımına katılmanız mümkün. Bunun için başlangı düzeyinde Pardus kullanmayı bilmeniz yeterli.<br /> <br /> Biz de Özgürlükİçin olarak bundan sonra Test Takımı'na verdiğimiz desteği daha da artırarak, test sürecine mümkün olduğunca daha fazla katkıcımızın dâhil olmasını amaçlıyoruz. Eğer siz de Pardus'un oluşumuna katkı vermek istiyor ama nereden başlayacağınızı bilmiyorsanız, hemen <a href="http://cekirdek.pardus.org.tr/~serbulent/ptg_bilgi.ods">bu adreste</a> yer alan formu doldurun ve <em><strong>psts _at_ pardus.org.tr </strong></em>adresine yollayarak gün geçtikçe büyüyen ve Pardus için çok önemli bir süreci yürüten Test Takımı'na katılın. Özgürlükİçin Forumlarında da test süreçleri ile ilgili fikirlerinizi <a href="http://www.ozgurlukicin.com/forum/pardus-2008-test-takimi/">paylaşabilirsiniz</a>.<br /> <br /> Özgürlük için... Pardus'u Test edin!</p> + Sal, 21 Eki 2008 14:27:00 +0000 + + + Hakan Uygun: Ekonomik Krize Çözüm : Özgür Yazılım + http://www.hakanuygun.com/blog/?p=138 + http://www.hakanuygun.com/blog/?p=138 + +<p>Hepimizin malumu ekonomik kriz kapıda. Şirketler kemer sıkma politikalarına başladılar. Bir sürü blogda krizin olası etkileri ve bunlarla nasıl baş edilir yazısı yayınlanıyor.</p> +<p><a href="http://www.techcrunch.com">TechCrunch</a> iki haftadır web 2.0 şirketlerinin durumları ve aldıkları önlemler üzerine yazılar yayınlıyor. Aynı şekilde <a href="http://www.webrazzi.com/2008/10/20/ekonomik-kriz-ortaminin-internet-sektorune-etkisi/">webrazzi</a>&#8216;de krizin genelde internet sektörü özelde ise Türkiye internet sektörü üzerine etkisini incelemiş&#8230;</p> +<p>Krizle baş etme konusunda en ilginç yaklaşımlardan birini startupların piri <a href="http://www.paulgraham.com/badeconomy.html">Paul Graham</a> sunuyor :&#8221;<span>If nuclear winter really is here, it may be safer to be a cockroach - Eğer nükleer kış geldiyse, en güvenlisi hamam böceği olmaktır&#8221;. </span>Yeni bir iş başlatmak ( startup ) için en uygun zamanın kötü ekonomiler olduğunu söylediği makalesinde küçük ve masrafları az olan bir işletmenin kötü ekonomilerde hayatta kalma şansının diğerlerinden daha fazla olduğunu ifade ediyor.</p> +<p>Kısaca herkesin söylediği : Maliyetlerinizi ne kadar düşürürseniz nakit problemleri ile o kadar az uğraşırsınız, dolayısı ile kriz süresince yaşarsınız.</p> +<p>İşte tamda bu noktada özgür yazılım işletmelere büyük olanaklar sunmakta. Sahipli yazılımların binlerce dolara mal olduğu bir ortamda bilişim ihtiyaçlarını özgür yazılım çözümleri ile giderip, bir yandan maliyetleri düşürürken bir yanda da teknolojik olarak rakiplerin önüne geçilebilir.</p> +<p>Bu konuda özgür yazılım avantajlarını anlatan örneğin şu <a href="http://www.cio.com/article/452170/Five_Cheap_or_Free_Software_Programs_You_Can_Afford_During_a_Financial_Crisis">makaleye</a> ya da <a href="http://blogs.sun.com/arungupta/entry/relevance_of_open_source_during">şu blog</a>&#8216;a bakılabilir. Ayrıca özgür yazılım alternatifleri için <a href="http://www.osalt.com/">bu sayfaya</a>, Türkiye&#8217;de geliştirilen özgür yazılımlar için ise <a href="http://linux.org.tr/yerliyazilimlar.html">bu sayfaya</a> bakılabilir.</p> +<p>Umarım bu krizi kazasız belasız atlatmanın ötesine geçip daha da güçlenerek çıkarız.</p> + Pts, 20 Eki 2008 22:38:20 +0000 + + + Hakan Uygun: Internet, Radyo ve Diğer Şeyler + http://www.hakanuygun.com/blog/?p=133 + http://www.hakanuygun.com/blog/?p=133 + +<p>Bir süredir, alışkın olduğum, daimi internet bağlantılarından uzak yaşamak durumunda kalıyorum. Müşteri ofislerinde, toplantılarda, şehir içinde ortalık da dolaşırken internet erişimi ciddi bir problem oluyor. Uzun bir zamandır neredeyse daimi internet erişimi olan biri olarak hemen tüm iletişim ihtiyacını internet ve e-posta ile gerçekleştirirken birden bire uzak kalınca bocaladım. Bir dolu şey aksamaya başladı.</p> +<p>Çözüm olarak mobil internet erişimlerini düşünmeye başladım. Karşıma çıkan bir kaç alternatif arasından <a href="http://www.nokia.com.tr/A41175900">Nokia E71</a>&#8216;i tercih ettim. Artık e-posta ve internet erişimi ( biraz pahalıya gelse de <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /> ) elimin altında.</p> +<p>Bu acil iletişim problemini çözünce başka bir sorun ile karşı karşıya kaldım. Taşınabilir bilgisayarımda hiç mp3 yok, çünkü <a href="http://www.lastfm.com.tr/">last.fm</a> dinliyordum. Diğer şeylerle birlikte internet kopunca last.fm&#8217;i de kaybettik <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /> Çözüm gene E71 oldu. Fakat last.fm&#8217;i hala çok arıyorum. Çalan parçadan hoşlanmazsanız bu şarkıyı geç diyemiyorsunuz, en fazla yapabileceğiniz radyo kanalını değiştirmek, ki bu halde bile çoğu zaman hoşlanmadığınız başka parçalara denk geliyorsunuz <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p> +<p>Sözün kısası &#8220;<a href="http://kampanya.org.tr/internetim">İnternet Yaşamdır</a>&#8221; diyorum&#8230;</p> + Pts, 20 Eki 2008 13:35:01 +0000 + + + Serkan Altuntaş: Samsung ML-1610 Mono Laser Printer + http://serkan.gen.tr/aug/181 + http://serkan.gen.tr/aug/181 + +Babam acilen bir lazer yazıcıya ihtiyaç duyunca bugün aşırı değerli dolara rağmen Samsung ML-1610 Mono Laser Printer aldık. Hatta o kadar acilen lazımdı ki şehirdeki Bimeks ve iki Teknosa&#8217;da bu modelden kutusu açılmamış tek bir ürün bile kalmadığından benim hiç yapmayacağım bir şeyi yapıp teşhir ürününü aldık. Gerçi karlı da çıktık. Normalde kutuyla gelen %60 [...] + Paz, 19 Eki 2008 20:36:35 +0000 + + + Necati Demir: Ülkemden Şahit Manzaraları - I + tag:blogger.com,1999:blog-7538492.post-1940559228991742784 + http://blog.demir.web.tr/2008/10/lkemden-ahit-manzaralar-i.html + + ]]> +Dikkat: Gerçek Bir Olaydır!<br /><br /><br />40 yaşlarında bir adam, 1 yaşını henüz doldurmuş çocuğu için dışarı süt almaya çıkmıştır. Mahallede bir bağrışma duyar, yaklaşır. Bir kavga gürültü vardır, olay biterken jandarma sorar: "şahit misin?". "Evet" cevabını veren adam o akşam evine dönemez. O akşam nezarethanede kalır, ertesi gün cezaevine gönderilir. Anlamamıştır, şahit olmaya gelmişti sadece. 45 gün sonra duruşma var derler, 45 gün cezaevinde kalmak zorundadır. 45 gün sonra da heyecan içinde çıkacağını düşünmektedir, ne de olsa sadece şahit olmaya gelmişti. Ve mahkeme günü gelip çatmıştır, çıkıp çocuklarını görecektir artık. Zaten, cezaevindeki görüşlerde de karısına, "çocuklara dikkat et" deyip durmuştu, özlemişti anlaşılan. Ama, o gün hakim mahkemeyi 1 ay erteler. Özlemle sarılma umutları bir anda sönmüştür Sebepsiz yere 1 ay daha 4 duvar arasında yaşamak zorunda kalacaktır. + Paz, 19 Eki 2008 16:44:00 +0000 + + + Enver Altın: A brave new world + http://enveraltin.com/1910080354 + http://enveraltin.com/blog/1910080354.html + +<p>End of an era marks the beginning of another one. With enormous sculpted success standing right behind me, I've recently quit <a href="http://www.cellenity.com/">Cellenity</a> to <a href="http://www.construia.com/">explore</a> what else the future has to offer.</p> +<p>On the way back home I stumbled upon the tail of this guy:</p> +<p align="center"><img src="http://enveraltin.com/img/kayserili.jpg" /></p> +<p>I spent the time and fuel that I'd normally be wasting around rush-hours Istanbul traffic on shows like Cebit Eurasia and Autoshow. Quick sum: Cebit is incrementally better every year, but Autoshow was spectacular. I've had the privilege to peek inside the Megane Coupe Concept, I shook hands with a member of the team who designed Sakarya University's 100% solar-cell racing car. Although fun, the rest was usual: short skirts, leg ladies, inefficient internal combustion engines, ugly car designs, little-to-no steps forward in evolution of transportation. Hybrids and electric vehicles receiving more attention was encouraging.</p> +<p>What comes next, I'll be blogging.</p> + Paz, 19 Eki 2008 07:54:00 +0000 + + + Murat Hazer: JBoss Seam kitapları .... + tag:blogger.com,1999:blog-10228790.post-3602928580930794976 + http://mhazer.blogspot.com/2008/10/jboss-seam-kitaplar.html + +Bir önceki yazımda JBoss Seam'in klasik Java Enterprise Development (JEE)'a kazandırdığı çeviklikten, programlama modeline, metodolojisine getirdiği <a href="http://solutionsfit.com/blog/2008/09/29/seam-and-web-beans-not-just-evolutionary-revolutionary/">devrim</a> niteliğindeki özelliklerinden bahsetmeye çalıştım. Yeni bir teknoloji öğrenmenin en iyi yolunun o konu hakkında yazılmış kaliteli kitap(lar)ı okumak olduğunu düşünenlerdenim. Bu yazımda da Seam hakkında yazılmış kitapları ve bu kitaplar hakkındaki düşüncelerimi paylaşmaya çalışacağım.<br /><br /><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPeoZaWnNaI/AAAAAAAAAZU/dAIV-io6JuA/s1600-h/seaminaction.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPeoZaWnNaI/AAAAAAAAAZU/dAIV-io6JuA/s200/seaminaction.jpg" alt="" id="BLOGGER_PHOTO_ID_5257856244502705570" border="0" /></a>"<a href="http://www.manning.com/dallen/">Seam in Action</a>" Seam'i en kapsamlı şekilde anlatan, okunması rahat ve bol örnekleri olan bir kitap. Manning yayınevinin diğer kitapları gibi bu kitap da oldukça kaliteli ve çok iyi edit edilmiş. Bu kitabı <a href="http://www.manning.com/about/meap.html">Early Access</a> seviyesinden beri takip ediyorum ve her sayfasından yeni bir şeyler öğrendim diyebilirim. Ayrıca referans kitabı olarak kullanılabilecek şekilde kapsamlı olduğu için başucu kitabı niteliğinde. Fakat kitap Seam'e ilk başlayanlar için biraz ağır gelebilir onun için biraz deneyim kazanıldıktan sonra okunmalı. (5/5)<br /><br /><br /><br /><hr /><br /><a href="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPesnXwmmnI/AAAAAAAAAZk/F7WdXGU1WHc/s1600-h/9781590597927.gif"><img src="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPesnXwmmnI/AAAAAAAAAZk/F7WdXGU1WHc/s200/9781590597927.gif" alt="" id="BLOGGER_PHOTO_ID_5257860882371091058" border="0" /></a>Apress yayınevinden çıkan "<a href="http://www.apress.com/book/view/1590597923">Beginning JBoss Seam</a>" özellikle yeni başlayanlar için çok yararlı diyebilirim. Özellikle Seam'in getirdiği yeniliklerden Bijection ve Web Conversation kavramının temellerini başarılı ve kolay anlaşılır bir şekilde anlatıyor.<br />(4/5)<br /><p><br /></p><p><br /></p><br /><br /><hr /><p></p><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetUVjXGHI/AAAAAAAAAZ0/3Lx6TlKXZl0/s1600-h/seamyuan.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetUVjXGHI/AAAAAAAAAZ0/3Lx6TlKXZl0/s200/seamyuan.jpg" alt="" id="BLOGGER_PHOTO_ID_5257861654872791154" border="0" /></a><br />Seam'in 1.x versiyonu sürecindeki geliştiricilerinden<span> Michael Juntao Yuan'ın yazarlığını yaptığı </span>"<a href="http://www.amazon.com/Seam-Framework-Experience-Evolution-JBoss/dp/0137129394/ref=pd_bbs_sr_5?ie=UTF8&s=books&qid=1224268151&sr=8-5">JBoss Seam: Simplicity and Power Beyond Java</a>" <span> bu kitap yine Seam'e yeni başlayanlar için güzel bir kaynak. Şu anda satışta olan versiyon Seam 1.x sürümünü kapsıyor fakat yakın zamanda Seam 2.x'i kapsayan <a href="http://www.amazon.com/Seam-Framework-Experience-Evolution-JBoss/dp/0137129394/ref=pd_bbs_sr_5?ie=UTF8&s=books&qid=1224268151&sr=8-5">yeni sürümü</a> yayınlanacak.</span><br />(4/5)<br /><p><br /></p><p><br /></p><hr /><p></p><br /><a href="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPetE5TUo6I/AAAAAAAAAZs/8mum2kwv43c/s1600-h/practical.gif"><img src="http://1.bp.blogspot.com/_4xA01uC1N2Q/SPetE5TUo6I/AAAAAAAAAZs/8mum2kwv43c/s200/practical.gif" alt="" id="BLOGGER_PHOTO_ID_5257861389591290786" border="0" /></a><br />Apress yayınevinden çıkan diğer bir kitap "<a href="http://www.apress.com/book/view/1590598636">Practical JBoss Seam Projects</a>". Henüz bu kitabı okumaya zamanım olmadı fakat okuma listemde üst sıralarda. Okuyan arkadaşlar fikirlerini paylaşabilirlerse çok sevinirim.<br />(?/5)<br /><p><br /></p><p><br /></p><p><br /></p><hr /><p></p><br /><a href="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetuBU4CAI/AAAAAAAAAZ8/q5Qb_toS_qI/s1600-h/hibernateinaction.jpg"><img src="http://2.bp.blogspot.com/_4xA01uC1N2Q/SPetuBU4CAI/AAAAAAAAAZ8/q5Qb_toS_qI/s200/hibernateinaction.jpg" alt="" id="BLOGGER_PHOTO_ID_5257862096119924738" border="0" /></a><br />Seam'in ve Hibernate'in yaratıcısı olan Gavin King'in yazarlığını yaptığı "Java Persistence with Hibernate"'in son ünitesi Seam'e ayrılmış. Seam'in ortaya çıkış sürecini ve temel özelliklerini yaratıcısının kaleminden okumak isteyenler mutlaka göz atmalılar.<br />(5/5)<br /><p></p> + Cum, 17 Eki 2008 23:24:13 +0000 + + + Necdet Yücel: Akademik Bilişim 2009 + tag:blogger.com,1999:blog-20350364.post-2201886036335522812 + http://nyucel.blogspot.com/2008/10/akademik-biliim-2009.html + + ]]> +XI. Akademik Bilişim Konferansı bu yıl Şanlıurfa'da Harran Üniversitesinde <a href="http://ab.org.tr/">yapılacak</a>. Yakında Akgül Hocanın <em>aktif katılım çağrısı</em>nı alırsınız ama ben şimdiden haber vereyim dedim.<br /><br />Her yıl olduğu gibi bu yıl da Konferans düzenlenmeden önce ev sahibi üniversitede bir toplantı yapılacak; 31 Ekimde Harran'da olacağız. Nereye gideceğiniz konusunda fikriniz olsun diye fotoğraflar eklerim ;) + Cum, 17 Eki 2008 00:21:46 +0000 + + + Ahmet Yıldız: Geri Sayım Başladı + http://www.bugunlinux.com/?p=118 + http://www.bugunlinux.com/?p=118 + +<p></p> + Per, 16 Eki 2008 22:18:21 +0000 + + + Fatih Arslan: Bardağın yarısı boş mu yoksu dolu mu? + http://blog.arsln.org/?p=537 + http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/ + +<p>Bur meşhur <a href="http://en.wikipedia.org/wiki/Is_the_glass_half_empty_or_half_full%3F">sorunun</a> bir çok cevabı var. Msn iletisinde şunları yazmıştı geçen bir arkadaşım:<br /> +<strong><br /> +To the optimist, the glass is half full.<br /> +To the pessimist, the glass is half empty.<br /> +To the engineer, the glass is twice as big as it needs to be.<br /> +</strong><br /> +Benim çok hoşuma gitmişti. Aklıma takılmış olacak ki web&#8217;de oradan oraya zıplarken bir yerde şu harika cümleyi gördüm:<br /> +<strong><br /> +The physicists say the glass is neither. It is completely full, half with water, the other half with air.</strong></p> +<p>Ardından bugün okulda arkadaşımı gördüm ve bunu söylemiştim. Sonra başardık konuşmaya, başkaları ne derdi acaba diye düşünüyorken kendi aramızda, ben de o arada atladım ve &#8220;<em>Filizof ne derdi ? </em>&#8221; diye sordum Biraz sessizlik oldu, düşünürken şunu deyiverdim:</p> +<p><strong>Hangi bardak ? </strong></p> +<p>Bu da böyle bir anımdı bugün. Bu bardağın yarısı boş mu dolu mu sorusu bu arada bilimsel olarak kullanılan bir metotmuş. Adı da <a href="http://en.wikipedia.org/wiki/Litmus_test_(politics)">Litmust Testi</a>. Psikoloji&#8217;de bir insanın en basitinden <strong>iyimser</strong> mi <strong>kötümser</strong> mi düşündüğünü belirtmek için yarıyormuş. Bu yöntem ile çok farklı düşünen insanları da görmek mümkün oluyor , örneğin yukarıdaki <strong>mühendis</strong> örneği gibi.</p> +<p>Bu testi farklı amaçlarla da kullanabiliyoruz, örneğin bir bardaki barmen-müşteri <a href="http://de.wikipedia.org/wiki/Wikipedia:Humorarchiv/Halb_voll_oder_halb_leer%3F">ilişikisi</a>. <strong>Barmen</strong> bardağı her zaman tam dolu, yarı dolu, çeyrek dolu,&#8230; şeklinde görüyor etrafı, fakat bardaki müşteriler için tam tersi, onlar tam boş, yarım boş, çeyrek boş,&#8230; şeklinde görüyorlar etraftaki bardakları. </p> + <p></p> + <hr noshade="noshade" /> + <small><p>Copyleft - Fatih Arslan - <a href="http://blog.arsln.org">Arslanlar Şehri</a>, 2008. | + <a href="http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/">Permalink</a> | + <a href="http://blog.arsln.org/bardagin-yarisi-bos-mu-yoksu-dolu-mu/#comments">Yorum(1)</a></p></small> + Per, 16 Eki 2008 21:00:40 +0000 + + + LKD YK: Eylül Ayı Üye Bülteni Yayınlandı + http://gunluk.lkd.org.tr/yk/?p=148 + http://gunluk.lkd.org.tr/yk/2008/10/16/eylul-ayi-uye-bulteni-yayinlandi/ + +<p>Linux Kullanıcıları Derneği’nin yapmış olduğu çalışmaların konsantre bir şekilde anlatıldığı aylık bülteni bu kez Eylül ayı için dernek üyelerimizden Seyfi Genç hazırladı. Bülten tüm üyelerimizin e-posta adreslerine gönderildi.</p> +<p>Gönderim sırasında Temmuz ayında olduğu gibi ufak çaplı bir kaza da yaşadık, e-postalara Reply-To yerine yanlışlıkla BCC (gizli karbon kopya) satırı eklenmesi nedeniyle yönetim kurulu listesinin moderatörleri Alper ve Doruk&#8217;un posta kutularına bir anda 1000′e yakın e-posta doldu&#8230; Neyse en azından bu sefer liste arşivleri kurtuldu :) (züğürt tesellisi)</p> + Per, 16 Eki 2008 20:02:32 +0000 + + + Hakan Uygun: Google Chrome, Özgür Yazılım ve Amerikan Ticaret Kanunları + http://www.hakanuygun.com/blog/?p=132 + http://www.hakanuygun.com/blog/?p=132 + +<p><a href="http://www.webrazzi.com/2008/10/15/google-suriye%e2%80%99-de-chrome-kullanimini-engelledi/">webrazzi</a>&#8216;den okuduğum habere göre Google Chrome uygulamasını Suriye, İran ve Amerikan Ticaret Kanunu&#8217;na göre ambargolu bir çok ülkeden indirilmesine kapatmış. Gene aynı haber içerisinde Google&#8217;ın Adsense için her hangi bir yaptırım uygulamadığı söyleniyor. Yazıda ticari bir hizmetin kapatılmayıp, ücretsiz bir yazılımın kapatılması üzerinde duruluyor&#8230;</p> +<p>Bense başka bir noktaya takıldım. Özgür yazılım lisanslarının Ticaret Kanunları çerçevesinde nasıl değerlendirileceği.</p> +<p>Sonuç ürün üzerinde Amerikan Ticaret kanunları çerçevesinde bir ambargo söz konusu olabilir, sonuçta Google bir pazar olarak Amerika ve kanunlarla uğraşmak yerine zaten bir pazar olarak görmediği ülkeler için ambargoyu uygular. Kaynak kodlara ulaşılması, derlenmesi ve ilgili kanunların geçerli olmadığı başka ülkeler üzerinden tekrar yayınlanması ise engellenemez. Tam bu noktada düşündüğüm ise çeşitli kanunlarla özgür yazılım ürünü kaynak kodlarımızında yasaklanması söz konusu olabilir mi? Son durumunu bilmiyorum ama bir dönem Amerikan kanunları nedeniyle şifreleme algoritmaları açısından bir dolu sorun yaşanıyordu&#8230;</p> +<p>Bir de aklıma takılan acaba Amerika tarafından ambargolu ülkeler acaba bir fork yaparlar mı? <img src="http://www.hakanuygun.com/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p> +<p>Aslında, dünyanın bu kadar küçüldüğü, sınırların bu kadar belirsizleştiği bir ortamda bir şeylerin kanunlarla sınırlandırılmaya çalışılması konusunda sorulacak o kadar fazla soru ve tartışılacak konu var ki&#8230;</p> + Per, 16 Eki 2008 18:06:04 +0000 Necdet Yücel: Fazıl Hüsnü Dağlarca @@ -167,17 +361,7 @@ Projeye destek olmak i&ccedil;in :&nbsp; </strong></p> ]]> <a href="http://members.comu.edu.tr/nyucel/img/blog/daglarca.jpg"><img src="http://members.comu.edu.tr/nyucel/img/blog/daglarca.jpg" alt="" border="0" /></a><br />Türk şiirinin büyük ismi <a href="http://tr.wikipedia.org/wiki/Faz%C4%B1l_H%C3%BCsn%C3%BC_Da%C4%9Flarca">Fazıl Hüsnü Dağlarca</a> 94 yaşında zatürre tedavisi gördüğü hastanede yaşamını yitirdi.<br /><br /><div><br /></div> - Çrş, 15 Eki 2008 23:08:13 +0000 - - - Bora Güngören: Aküyle çalışan atsız fayton - http://blogs.portakalteknoloji.com/bora/blog/2008/10/15/200/ - http://blogs.portakalteknoloji.com/bora/blog/2008/10/15/200/ - -<p>Memleketim insanı yapar tabii. </p> - -<p><a href="http://www.radikal.com.tr/Default.aspx?aType=Detay&amp;ArticleID=903522&amp;Date=15.10.2008&amp;CategoryID=79"><img src="http://i.radikal.com.tr/644x385/2008/10/15/fft5_mf59848.Jpeg" /></a></p> - Çrş, 15 Eki 2008 20:56:00 +0000 + Çar, 15 Eki 2008 23:08:13 +0000 FTP ekibi: OpenOffice 3.0 Çıktı @@ -192,170 +376,7 @@ Projeye destek olmak i&ccedil;in :&nbsp; </strong></p> </ul> <p>Ayrıca <a href="http://www.openoffice.org.tr/" target="_blank">OpenOffice Türkiye web sayfası</a>nda ek bilgiler bulabilirsiniz.</p> <p>- yansı ekibi</p> - Çrş, 15 Eki 2008 13:16:24 +0000 - - - LKD YK: Dünya Plone Günü’nde Plone Semineri - http://gunluk.lkd.org.tr/yk/?p=147 - http://gunluk.lkd.org.tr/yk/2008/10/15/dunya-plone-gununde-plone-semineri/ - -<p>Önde gelen özgür içerik yönetim sistemlerinden <a href="http://plone.org">Plone</a>&#8216;un yaygınlaştırılması için 7 Kasım &#8220;<a href="http://plone.org/events/wpd">Dünya Plone Günü</a>&#8221; ilan edildi ve o günde dünyanın dört bir yanında Plone&#8217;u tanıtma ve yaygınlaştırma amacıyla seminerler düzenleniyor.</p> -<p>Derneğimizin köklerini oluşturan, o zamanki adıyla Linux Kullanıcıları Grubu&#8217;nun aktif insanlarından H. Turgut Uyar bizimle bağlantı kurarak bu etkinliği haber verdi ve o gün bu konuda bir seminer verebileceğini söyledi. Çoğumuz onu 90&#8242;lı yıllardaki Türkiye&#8217;nin ilk GNU/Linux dağıtımı, Turkuaz Linux&#8217;tan hatırlıyoruz. Kendisi 2002 yılından bu yana da Plone kullanıyor. Plone ile site projeleri gerçekleştirdi (www.lkd.org.tr de dahil), Plone&#8217;u temel alan uygulamalar geliştirdi ve Plone&#8217;un Türkçe çevirisini yaptı. Aynı zamanda Plone Vakfı&#8217;nın üyesi.</p> -<p>Etkinlikten haberdar olan <a href="http://www.inetd.org.tr">Internet Teknolojileri Derneği</a> de etkinliğin tanıtımında katkıda bulunmak istediğini belirtti. <a href="http://www.bilgi.edu.tr">Bilgi Üniversitesi</a> ile bağlantı kurduğumuzda, seve seve böyle bir etkinliğe ev sahipliği yapacaklarını belirttiler.</p> -<p>Plone&#8217;la ve Plone&#8217;a ilgi duyan insanlarla tanışmak isteyen herkesi Dünya Plone Günü, 07 Kasım 2008&#8242;de, 14:00-15:00 arasında İstanbul Bilgi Üniversitesi Dolapdere Kampüsü&#8217;nün D132 numaralı salonuna bekliyoruz.</p> - Çrş, 15 Eki 2008 06:50:06 +0000 - - - Bora Güngören: Bodoslama Bilişim Şirketi 4 - Finans Dediğin Elinin Kiri - http://blogs.portakalteknoloji.com/bora/blog/2008/10/15/199/ - http://blogs.portakalteknoloji.com/bora/blog/2008/10/15/199/ - -<p>Bu seferki öykü özellikle 2000 krizini yaşayanların bazılarına tanıdık gelecektir herhalde. Mevcut ekonomik durum için de öğretici olur diye düşünüyorum. </p> -<p>Genç girişimcimizin şirketi çok ciddi bir kaç kamu projesi aldıktan sonra kendisi şirketin büyütülmesi için yatırım yapılması gerektiğine karar verir. Henüz bu projeler teslim de edilmemiştir ama son derece iyi teklif metinleri yazıldığına göre, elbette o metinlerin de gerçekleşeceğine inanır ve çalışmaya başlar. </p> -<p>Bilindiği gibi bir yazılım şirketinin en önemli demirbaşlarından birisi en az 2, mümkünse 3 aracın otopark alanına zorlukla sığan bir makam arabası olmalıdır. Bu nedenle girişimcimiz bu demirbaş araçlardan en az 2 tane alır. Kendisi tek yöneticidir ama kapının önünde 2 araç gerçekten çok güzel gözükecektir. </p> -<p>Arkasından toplamda en fazla 10 sözleşme yöneten, yılda en fazla 10 tane proje için 10 tane fatura kesen, ve onlarca çalışan da olsa hepsi her ay aynı maaşları alan kişilerin bordrolarını dökmek için idari - mali işler bölümüne genç ve dinamik bir kadro kurmak gerekir. Bu bölüme önce 5, sonra bir 5 daha derken 10 kişi işe alınır. Bu 10 kişinin telefon açması uygun olmadığından bu arkadaşlara bir de ön büro kurulur. </p> -<p>Bu kadar kalabalık bir finans departmanı oluşunca, bankalardan kredi almak, teminat mektubu elde etmek gibi konularda önemli bir avantaj elde edilir. Artık kendisi 1-2 banka ile muhatap olacağına, ülkemizdeki hemen her banka ve hatta her bankada birden fazla şube ile muhatap olacak bir kadro olduğundan, her şubede hesaplar açılır. Her şubeye her ay güncel mizanlar yollanarak ne kadar büyük ve güçlü bir şirket olunduğu gösterilir. Her bir seferinde en az 10 bankadan kredi teklifi istenir. Hatta teklifler gerekmese de istenir. Bazen bir bankanın mevduata verdiği faiz öyle çekici gelir ki - öteki bankadan kredi çekilip ilk bankaya faize yatırılarak para kazanılır. Bu sayede şirket iş yapmadan para kazanmanın keyfine varmaya başlar. </p> -<p>Tabii şirketin aylık gelirleri giderleri aşağı yukarı sabit olduğu için bu kadar kalabalık idari kadro nedeni ile teknik kadro hızlı genişleyemez. Ancak yeni iş alındıkça genişleme sağlanır. Böylece şirketin gerçek iş gücünün büyümesi yavaşlar. Bu da doğal karşılanır - zaten 50 bin kişiyi geçen ABD'li şirketlerin hala hızla büyümesi de ancak yalandır. </p> -<p>Büyüme yavaşlarken, elbette ters giden işler ve müşterilerden geciken ödemeler de olur. Şirketin kuvvetli bir idari mali işler kadrosu olduğu için hemen bankalardan proje finansmanları alınmaya başlanır. Bu projelerde dışarıdan yaptırılan işler için de rahatlıkla ileri vadeli çekler ve diğer finansal araçlar ile gün kurtarılır. Böylece kapsamlı bir finansal yönetim başlamış olur.</p> -<p>Elbette bu finansal yönetim toplamı yönetmektedir. Ama neyin toplamının yönetildiği tartışmalıdır. Eldeki proje portföyü içinde hangi projelerin zararda olduğunu ifade etmek zor gelir. Muhasebe ekibi zaten onlarca bankadaki hesaplar, çekler, krediler ve bunların faizleri ile meşguldür. Tek düzen muhasebede bunların hepsinin ayrı hesap kodu vardır ve bu kadar hesap kodu içinde yanlış işlem yaparak Maliye'ye yanlış beyan vermek istemezler. Bu nedenle örneğin bir personelin bordrosundan çıkabilecek maliyet kalemlerini yarı yarıya çalıştığı iki projeye eşit bölüştürmek için proje muhasebe hesabı açacak zaman olmaz. </p> -<p>An gelir, finansal yönetim, muhasebeden yardım istemeye başlar. Bankaların bazı rasyoları güzel görmesi için muhasebenin o şekilde değil de bu şekilde tutulması gerekmektedir. Ayrıca fasıllar arası aktarımlar da önerilir. Ani sermaye artırımları ve indirimleri, demirbaş alımları ve satışları başlar. Bankalardan krediler geldiği sürece, genç girişimcimiz bunları umursamaz. </p> -<p>Bu arada teminat mektubu alabilmek için arsa, apartman dairesi gibi taşınmaz malların alınması salık verilir. Zaten yazılım şirketi makina sanayinde bir fabrika olduğu için ileride depo ve ek bina yapılabilecek geniş bir arazi içinde bina yapma mantığı geçerlidir. Hemen gidilir, şehrin dışında bir yerde geniş arsalar alınır. Arsa başı boş kalmasın diye bir de bina yapılır. O binada hiç bir yazılımcı çalışmayacak istemez ama bir kaç idari personel ve bazı yazılımcılar rotasyon usulü oraya gider gelirler. Ayrıca binanın güvenliği, temizliği gibi ek masraflar çıkar. Binaya gidecek personel için servis aracı satın alınır. Araç için şoför işe alınır. </p> -<p>Gün gelir, ülkede finansal sıkıntılar patlak verir. Bazı bankalar batar. Diğer bankalar da kendi durumlarını sağlama almak için kredi borcu olan firmalardan bu kredileri kapatmalarını rica ederler. Bizim girişimci tam da bu sırada arka arkaya bazı işlerinde alacaklarını alamaz. Kendisine verilen bazı çekler de karşılıksız çıkar ve sıkıntıya düşer. Derhal kendisinin dışarıya olan borçları sınıflandırılır. </p> -<p>Öncelikte banka borçları vardır çünkü bankalar en önemli iş ortaklarıdır. Sonra şirketin güçlü görünmesini sağlayan yan masraflar - özellikle de beylik ifadeler ile ne kadar güçlü olduklarını vurgulayan reklam maliyetleri kenara ayrılır. Sonra da kısıntılar başlar. Personel maaşları aylarca eksik ödenir. Taşeron firmaların ödemeleri sudan nedenlerle geciktirilir. Örneğin her gün işe gelen bir müdür tam da o ara hasta olur ve onun dışındaki müdürler de nezaketsizlik olacağı gerekçesi ile belgelere uzun süre imza atmazlar. </p> -<p>Bu şekilde bazı taşeronlar batırılır ki onların alacaklarını tahsil etme şansı kalmasın. Bazı elemanların istifa etmesi sağlanır ki tazminat alamasın. </p> -<p>Ancak bu arada kötü bir şey olur. Hiç kimse bu şirkette çalışmak istemez, ayrıca kimse bu şirketin taşeronu olmak da istemez. Giderek nitelikli insanların şirkete girişi kısıtlanır. Ayrılanlar içinde de ilk ayrılanlar en nitelikli insanlar olur. Genç girişimcimiz bunu da önemsemez. Bilanço ve aylık mizanlarda harika rasyolar vardır. Daha tahsil edemese de ileride alacağı paraları koyunca harika sayılar oluşmaktadır. Zaten finansal performans en önemli performanstır. </p> -<p>Bu arada ortaya çıkan banka krizleri sonrası ülkede yeni yasalar çıkar. Bankaların başka bazı rasyolara da bakması istenir. Bu rasyolar, önceki rasyoları iyi göstermek için oynanmış bilançolarda hassaslaşan yerleri gıdıklamaktadır. Rasyo sayısı artınca, arkadaşın bilançosu da o kadar sağlam gözükmez. Bu yeni teknik yüzünden ahbaplık gelişmiş olan banka şube müdürlerinin de eli kolu bağlanır. </p> -<p>Şirket tüm odağını soruna çözmeye verir. Tüm idareciler sürekli bankalara gidip kredi aramaktadır. Kredi sağlayabilen idareci ödüllendirilir. Bu arada projelerdeki aksaklıklar raporlansa dahi dinlenmez ve müşterlerden gelecek ödemeler daha da çok gecikir. Müşteriden gelecek olan gerçekten hak edilmiş para yerine bankadan gelen borç işe süreç yürütme alışkanlığı daha da derinleşir. </p> -<p>Gün gelir, şirketin rasyoları o kadar zayıflar ki şirketin borç ödeme kapasitesini doldurduğu anlaşılır. O an şirket yeni kredi alamaz olur ve müşterilerine odaklanması gerektiğini anlar. </p> -<p>Ancak müşterilerin bazıları için olan olmuş, iş işten geçmiştir. Bu müşteriler ile artık insani konuşma değil de sözleşme maddeleri üzerinden tartışma geçerlidir Bu ortam altında müşteri ödemeleri alınamaz, bankalardan ek kredi alınamaz. Şirket iflasa sürüklenir. Ancak dışarıya bu hissettirilmez. </p> -<p>Tam bu sırada genç girişimcimize uluslar arası bir ödül gelir. İki yıl önceki oynanmış bilançoları örnek göstererek, en hızlı büyüyen şirketlerden birisinin kurucusu olarak bir ödüle aday gösterilmiştir ve yıllar süren süreç sonunda bir şekilde seçilmiştir. Bu ödül bankaların ve yatırımcıların şirkete bakışını değiştirir - kredi muslukları açılır, hatta şirketin hisselerinin bir bölümü oldukça iyi bir bedel karşılığı satılır. </p> -<p>Şirket iflastan dönmüştür. Bu sırada büyük emekleri geçen idari mali kadroya derhal ikramiyeler verilir. Ancak o dar zamanda maaşlarını eksik alarak projeleri zamanında tamamlayan esas çalışanlar unutulur. Şirket iflastan kurtulmuştur ama personeli ile olan barışı bozulmuştur bir kere. </p> -<p>Genç girişimcimizin bu krizden çıkarttığı ders ise, finans departmanını güçlendirmek olur ve 10 kişi daha işe alarak 20 kişilik bir finans departmanı kurulur. </p> - Çrş, 15 Eki 2008 01:19:00 +0000 - - - Bora Güngören: Masa düzeni - http://blogs.portakalteknoloji.com/bora/blog/2008/10/15/198/ - http://blogs.portakalteknoloji.com/bora/blog/2008/10/15/198/ - -<p>Az önce okuduğum bir <a href="http://www.askmen.com/sports/health_200/215_mens_health.html">yazıya</a> göre arada bir masanızın düzenini değiştirmek, sizi rutinden çıkarttığı için olaylara dikkatinizi verme becerinizi artırıyormuş. </p> - -<p>O zaman, masası hep dağınık olan kişiler acaba size en çok dikkatini veren kişiler mi? :) </p> - Çrş, 15 Eki 2008 00:39:00 +0000 - - - Bora Güngören: İki blog keşfi - http://blogs.portakalteknoloji.com/bora/blog/2008/10/14/197/ - http://blogs.portakalteknoloji.com/bora/blog/2008/10/14/197/ - -<p>Bugün Rusya, Ukrayna ve diğer kuzey komşularımızı değişik bir gözle anlatan iki blog keşfettim. Bağlantılarını da burada paylaşmak istedim. <a href="http://www.dincarslan.org/">Dinç Arslan</a> ve <a href="http://ulasergin.blogspot.com/">Ulaş Ergin</a>'in blogları kesinlikle okunmaya değer. </p> - Sal, 14 Eki 2008 11:32:00 +0000 - - - Özgürlükiçin.com: OpenOffice.org 3.0 Duyuruldu - http://ozgurlukicin.com/haber/openofficeorg-30-duyuruldu/ - http://ozgurlukicin.com/haber/openofficeorg-30-duyuruldu/ - -<p><img src="http://www.ozgurlukicin.com/media/upload/image/ooo3.png" border="0" alt="ooo3.png" width="310" height="201" align="left" /><a href="http://www.openoffice.org">OpenOffice.org</a> projesinin sekizinci doğum gününde topluluk, OpenOffice.org 3.0'ın yayınlandığını duyurdu. Yazılımın üçüncü ana sürümü, kullanıcıları için pek çok yeni özellik ve gelişmiş, geliştirilebilir araçlar sunuyor. OpenOffice.org artık Mac OS X platformunda da çalışıyor.<br /> <br /> OpenOffice.org 3.0 basit bir uygulamadan çok daha fazlasını içeriyor. Bu sürümle birlikte; temel kelime işlemci, hesap tablosu, grafik, formül ve veritabanı uygulamaları, OpenOffice.org eklenti deposundan indirilebilen genişletmelerle daha da zenginleştirilebiliyor. Bu özellik sayesinde kurumsal kullanıcılar, okullar ve ev kullanıcıları ofis yazılımlarını kendi isteklerine göre özelleştirebiliyor.<br /> <br /> Yüz binlerce kişi tarafından indirilen OpenOffice.org'un önceki sürümleri, projenin popülaritesini kanıtlamakta. OpenOffice.org projesinin topluluk yöneticisi olan Louis Suarez-Potts, yeni sürümle ilgili olarak özetle “Pazarımız büyüdü.” dedi ve sözlerine ”Hükumetler ve kuruluşlar ardı ardına '<a href="http://tr.pardus-wiki.org/Opendocument">Açık Belge Biçimi</a>'ni (OOo'nun öntanımlı kullandığı, ISO onaylı standart) seçiyor, eşzamanlı olarak OpenOffice.org'u da benimsiyor ve çok seviyorlar. OpenOffice.org 3.0 sürümüyle uygulama artık; MS Office ile daha uyumlu, yetenekli ve geliştirilebilir bir hale geldi.” diye devam etti.<br /> <br /> OpenOffice.org pazarlama takımı ise yeni sürüm hakkında “OpenOffice.org artık eskisinden çok daha güçlü. MS Access 2007 .accdb dosya desteği, geliştirilmiş VBA makro desteği ve <a href="http://tr.pardus-wiki.org/Office_Open_XML">MS Office Open XML</a> dosyalarını okuyabilme yeteneği sayesinde MS Office yazılımından göç her zamankinden çok daha kolay.” diyor.<br /> <br /> OpenOffice.org 3.0; yeni “Başlangıç Merkezi”, güncellenen açılış ekranı, yeni simgeseti ve kullanılabilirlik geliştirmeleriyle yepyeni bir yüze kavuşmuş durumda. Yeni özellikler şu şekilde:</p> -<h3>Kelime İşlemci (Writer)</h3> -<ul> -<li>Düzenleme sırasında çoklu sayfa görünümüne izin veren yeni yakınlaştırma kontrolü</li> -<li>Yeni ve güçlü çoklu dil desteği</li> -<li>Geliştirilmiş “Notlar” özelliği</li> -<li>Geleneksel ofis belgelerinin yanı sıra web sayfalarını ve wiki belgelerini düzenleyebilme</li> -</ul> -<h3>Hesap Tablosu (Calc)</h3> -<ul> -<li>Tablo başına 1024'e kadar sütun desteği</li> -<li>Yeni güçlü eşitlik hesaplayıcı</li> -<li>Çoklu kullanıcılar için yeni işbirliği özelliği</li> -</ul> -<h3>Çizim (Draw)</h3> -<ul> -<li>Poster boyutunda grafik düzenleme yeteneği<br /></li> -</ul> -<h3>Sunu (Impress)<br /></h3> -<ul> -<li>Sunu içinde yer alan tablolar için düzenleyici</li> -</ul> -<p><br /> OpenOffice.org'un eklenti destekleme özelliği 3.0 ile de devam ediyor. Farklı geliştiriciler tarafından hazırlanan sunu hazırlama konsolu, ticaret analitikler desteği, PDF aktarma, melez PDF belgesi oluşturma gibi pek çok özellik sağlayan eklentilerin sayısı gün geçtikçe artıyor.<br /> <br /> OpenOffice.org 3.0, kullanıcılarının Kelime İşlemci (Writer) ile web ve wiki belgesi oluşturmasını sağlayarak, XHTML ve MediaWiki gibi belli bir kesime hitap eden web dillerini öğrenmeye gerek kalmadan, Web 2.0 dünyasına katılmasını kolaylaştırıyor.<br /> <br /> OpenOffice.org'un yeni sürümünün PiSi paketinin yakın bir zamanda depomuzdaki yerini almasını bekliyoruz.</p> - Sal, 14 Eki 2008 10:31:00 +0000 - - - Gürer Özen: ceeebit - http://6kere9.com/blag/2008/10/14/73/ - http://6kere9.com/blag/2008/10/14/73/ - - ]]> -<p> -11 Ekim Cumartesi günü, Özgürlükİçin ekibi ile birlikte Cebit fuarında -Pardus standındaydık. -</p> - -<p> -Bir süredir üstünde çalıştığımız robotumuz -<a href="http://ibilisim.com.tr/inci/index.html">İnci</a>'yi tanıttık, -geldiği noktayı gösterdik, birkaç küçük gösterisini yaptık. -</p> - -<img src="http://cekirdek.pardus.org.tr/~gurer/inci-cebit.jpg" /> - -<p> -İnci, araştırma geliştirme amaçlı, omni hareket sistemine sahip bir -robot. Ayrıca üzerindeki gömülü bilgisayarında çalışan Pardus 2008 ile, -dünyada Pardus'la çalışan ilk otonom robot :) -</p> - -<p> -Şehre çok uzak ve biçimsiz bir yerde yapılmasına karşın, üşenmeyip gelen -Pardus gönüllüleriyle çok keyifli vakit geçirdik. -</p> - Sal, 14 Eki 2008 08:34:00 +0000 - - - Özgürlükiçin.com: Linux Yüklü Dijital Piyano - http://ozgurlukicin.com/haber/linux-yuklu-dijital-piyano/ - http://ozgurlukicin.com/haber/linux-yuklu-dijital-piyano/ - -<p><img src="http://www.ozgurlukicin.com/media/upload/image/YAMAHA3.jpg" border="0" alt="YAMAHA3.jpg" align="left" /></p> -<p>Yamaha firmasının dijital piyano modelleri arasına, Linux işletim sistemi gömülü olarak gelen yeni modeller ekledi. Bir gömülü Linux dağıtımı olan Montavista Linux, akustik kayıt ve web temelli uygulamalarla bütünleşik çalışabilen yeni arabirim imkânları sunuyor. Piyanonun içinde 333 Mhz Geode temelli bir anakart ve Montavista Linux mevcut.</p> -<p>Yamaha'nın ürettiği bu piyanonun tuşlarının altına yerleştirilmiş minik bir kutuda yer alan kontrol ünitesi içindeki LSI (Large-scale integration – Geniş-ölçekli entegrasyon) özellikli işlemci, özel bir RTOS (Real Time Operating System – Gerçek Zamanlı İşletim Sistemi) çalıştırıyor. RTOS, bir tuşa basılmasıyla bırakılması arasında, tellere vuran çekiçlerin hareketlerini izleyen hassas alıcıların gönderdiği verileri topluyor. Çekiçlerin ve tuş basınçlarını kaydederek, gerçek bir piyano çalışının verileri bu özel sistem aracılığıyla kayıt altında alınıyor.<br /><br />Çekiçlerin ve tuş basıncının konumunu ölçmenin ötesinde, RTOS onları denetleyebiliyor ve böylece yakaladığı verileri “icra” olarak yeniden üretiyor. Sistemde bir optik sürücü mevcut ve kullanıcılar kendi icralarının kaydını yapıp dinleyebildikleri gibi aynı zamanda da büyük üstatların önemli icralarının kayıtlarını da satın alabilirler.</p> -<p>Daha anlaşılır bir dille söylemek gerekirse, evinizdeki bu piyano ile Fahir Atakoğlu'nun sadece son albümünü değil, tuşlara dokunuşunu ve piyano çalışını da evinize taşıyabiliyorsunuz.</p> -<p>Mark IV Disklavier modeli ile Yamaha, sisteme gömülü olan Linux işletim sistemi sayesinde web temelli istemci/sunucu ile uzaktan kontrol arabiriminin çalışmasına olanak tanınıyor ve bu sayede kullanıcılar, piyanonun yanına kadar gidip optik sürücülerden müziği yüklemek ve çalmak zahmetinden de kurtuluyorlar. Bu uzaktan kumanda sayesinde kullanıcılar akustik kayıt, kayıt işleme ve çalma özellikleri yanında, uzak müzik servislerinin tekliflerini de değerlendirme imkânı bularak İnternet üzerinden alışveriş yapabiliyor.<br /><br />Mark IV Disklavier piyano, 333 Mhz AMD Geode tabanlı bir anakart ve Montavista Linux ile birlikte çalışıyor. RAM boyutu 256 MB olup, sabit diski 80 GB genişliğinde. I/O bileşenleri, Ethernet, WiFi, çift USB portu, seri portlar, ses giriş/çıkış, video giriş ve stereo hoparlörden oluşuyor. Piyanomuzda ayrıca PCI genişleme arabirimi de bulunmaktadır :).</p> - Pzt, 13 Eki 2008 19:35:00 +0000 - - - Alper Kanat: Arch Linux'da Türkçe Yazım Kontrolü - http://raptiye.org/blog/2008/10/13/arch-linuxda-turkce-yazim-kontrolu/ - http://raptiye.org/blog/2008/10/13/arch-linuxda-turkce-yazim-kontrolu/ - - ]]> -<img src="http://raptiye.org/resimler/simge/archlinux.png" alt="arch linux" width="128" height="128" />Bugün <a title="samed'in sitesini ziyaret etmek için tıklayın.." href="http://eventualis.org/" target="_blank">Samed BEYRİBEY</a>'in büyük katkılarıyla <a title="topluluk sayfasına ulaşmak için tıklayın.." href="http://www.archlinuxtr.org" target="_blank">Arch Linux Türkiye Topluluğu</a> <a title="e-posta listeleri hakkında detaylı bilgi almak için tıklayın.." href="http://www.archlinuxtr.org/liste/" target="_blank">listelerine</a> düşen e-posta'yı görmeyen ve bilmeyenler için buraya da hiç bir değişiklik yapmadan göndermek istiyorum.<br /><br />Merhaba,<br />Zemberek geliştiricisi Serkan Kaba ile konuştuktan sonra, (Archlinux'da<br />Türkçe yazım denetimini nasıl sağladığımızı teknik olarak anlattım)<br />bir duyuru yolu ile topluluğumuzu bilgilendirmek istedim.<br /><br />Bu duyuruyu, gezegen, blog vs. ortamlarda yazabilir, paylaşabilirsiniz.<br /><br />AUR üzerindeki zemberek-server paketinin yardımı ile enchant destekli<br />*tüm* uygulamalarda Türkçe yazım denetimini sorunsuz olarak<br />yapabiliyoruz. Bu iş için zemberek kütüphanesinin *şu an için* 2.1<br />sürümü kullanılıyor, bir takım testlerden sonra tekrar paket haline<br />getirilerek son sürümü olan 2.1.1'e geçiş yapılacak.<br /><br />Ayrıca, KDE3 kullanıcıları, zpspell paketini kurarak, yazım<br />denetimini sorunsuz gerçekleştiriyor. KDE4 enchant kütüphanesini<br />kullandığı için KDE4 kullanıcılarının zpspell paketini kurmasına<br />gerek kalmıyor.<br /><br />zemberek-server init betiği ister Sun-JRE ister OpenJDK (icedtea vs.)<br />şekilde çalıştırılmaya hazır biçimde, hem AUR'da hem de SVN[1]'de yerini<br />almış durumda. <br /><br />GTKseverleri de ayrıca bilgilendirmek istiyorum: enchant destekleyen<br />her türlü programda (xchat, gaim, evolution ve son olarak claws-mail<br />-ilk akla gelenler- vs) Türkçe yazım denetimi yapmak mümkün oluyor.<br /><br />Ayrıca, http://code.google.com/p/zemberek proje sayfasındaki openoffice<br />eklentisi ile de, OpenOffice üzerinde Türkçe yazım denetimi yapmak<br />mümkün oluyor.<br /><br /> [1] = http://svn.archlinuxtr.org/projects/packages/zemberek-server/<br /><br />Saygılarımla,<br />Samed Beyribey<br /><br />Tüm Arch Linux kullanıcılarına afiyet olsun!<div class="feedflare"> -<a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=ziA2M"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=ziA2M" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=I9rvm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=I9rvm" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=CBSSm"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=CBSSm" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=feehM"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=feehM" border="0" /></a> <a href="http://feeds.feedburner.com/~f/raptiye/acikkaynak?a=ffh9m"><img src="http://feeds.feedburner.com/~f/raptiye/acikkaynak?i=ffh9m" border="0" /></a> -</div> - Pzt, 13 Eki 2008 17:49:58 +0000 - - - Onur Tolga Şehitoğlu: Like a Prayer - http://sehitoglu.web.tr/gunluk/?p=105 - http://sehitoglu.web.tr/gunluk/?p=105 - -<p>Son dönemde mail istemcilerinin büyük çoğunluğunu İnternet tarayıcıları ele geçirdi. Çogu kişi IMAP istemciler yerine aslen HTTP-IMAP geçidi olan webmail uygulamalarını tercih ediyor.</p> -<p>Webmail sunucularının büyük çoğunluğu durumsuz çalışıyor. Yani istemciden gelen her tıklamada yeni bir IMAP oturumu açıp işlemi yaptıktan sonra oturumu kaybediyor. <a href="http://www.roundcube.net/">Rouncube</a> gibi posta başlık listesini tamponda tutanlar var ama hala bir &#8220;yetkilendir-işlemi yap-çık&#8221; döngüsünü işletmek zorunda kalıyorlar. </p> -<p>İşlemi hızlandırmanın bir yolu bir IMAP vekil sunucusu yerleştirmek (Bkz. <a href="http://www.imapproxy.org/">imapproxy</a>) böylelikle yetkilendirmeyi ve oturumu açık tutarak yeniden kullanabiliyorsunuz. Ama hala sunucu, istemcinin <strong>durumunu</strong> tutmadığı için thunderbird, kmail, evolution benzeri istemcilerden yavaşsınız.</p> -<p>İki yıl kadar önce, ya bunu yapmışlardır dediğimde <a href="http://www-uxsup.csx.cam.ac.uk/~dpc22/prayer/">Prayer</a>&#8216;la karşılaştım. C ile yazılmış, tam düşündüğüm gibi her oturum için oturumun durumunu sunucuda tutan, IMAP oturumunu açık tutan ve dolayısıyla her tıklamada sadece minimum gerekli işlemi yapan, bu sayede de son derece hızlı bir webmail yazılımı. Kullanıcı arayüzü çirkin olsa da hızı gerçekten müthiş. Ayrıca PHP tabanlı olan webmail&#8217;lere göre güvenli olduğu da muhakkak. Eminim Java gibi bir dilde uygulama sunucuları üzerinde çalışan muadilleri vardır ama ben Prayer&#8217;in bu koşullarda popüler olmamasına çok şaşırıyorum. </p> -<p>Eeee, bunları niye şimdi yazıyorsun derseniz, yeni sürümü çıkmış, Gökdeniz kurmuş, ben duyurayım, siz kurun, sonra gelenler de hani bana hani bana desin diye&#8230; <img src="http://sehitoglu.web.tr/gunluk/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p> - Pzt, 13 Eki 2008 11:44:07 +0000 - - - Web-CG: Liste.linux.org.tr yenilendi - http://gunluk.lkd.org.tr/webcg/?p=12 - http://gunluk.lkd.org.tr/webcg/2008/10/13/listelinuxorgtr-yenilendi/ - -<p>Uzun süredir aynı tasarım ve içerik ile yayında olan liste.linux.org.tr sayfamız yenilendi. Çalışmada emeği geçen herkese özellikle sayfayı hazırlayan Mehmet Fatih YILDIZ (mfyz) &#8216;a teşekkür ediyoruz.</p> -<p>liste sayfası, linux.org.tr, lkd.org.tr ve bunlara ağlı alt alan adları ile ilgili her tür görüş, öneri ve isteklerinizi web[at]linux.org.tr adresine yazabilirsiniz.</p> -<p>Not: Linux gezegeni hafta sonu yaşanan bir dns sorunu sebebi ile güncellenememiştir. Bu aksaklıktan dolayı bütün gezegen sakinlerinden özür dileriz.</p> - Pzt, 13 Eki 2008 06:40:48 +0000 + Çar, 15 Eki 2008 13:16:24 +0000