Deprecated: Wikimedia\Rdbms\IDatabase::setTransactionListener(): Implicitly marking parameter $callback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/IDatabase.php on line 1625

Deprecated: Wikimedia\Rdbms\IDatabase::cancelAtomic(): Implicitly marking parameter $sectionId as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/IDatabase.php on line 1741

Deprecated: Wikimedia\Rdbms\ILoadBalancer::getReadOnlyReason(): Implicitly marking parameter $conn as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/loadbalancer/ILoadBalancer.php on line 555

Deprecated: Wikimedia\Rdbms\ILoadBalancer::setTransactionListener(): Implicitly marking parameter $callback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/loadbalancer/ILoadBalancer.php on line 649

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /var/www/mediawiki/includes/GlobalFunctions.php on line 2119

Deprecated: Profiler::scopedProfileOut(): Implicitly marking parameter $section as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/profiler/Profiler.php on line 170

Deprecated: UploadBase::stashFile(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/upload/UploadBase.php on line 1112

Deprecated: UploadBase::doStashFile(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/upload/UploadBase.php on line 1122

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: MediaWiki\MediaWikiServices::resetGlobalInstance(): Implicitly marking parameter $bootstrapConfig as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MediaWikiServices.php on line 196

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: RequestContext::setTitle(): Implicitly marking parameter $title as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/context/RequestContext.php on line 151

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\LBFactory::shutdown(): Implicitly marking parameter $workCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/lbfactory/LBFactory.php on line 164

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\LBFactory::setWaitForReplicationListener(): Implicitly marking parameter $callback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/lbfactory/LBFactory.php on line 438

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\ILBFactory::shutdown(): Implicitly marking parameter $workCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/lbfactory/ILBFactory.php on line 171

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\ILBFactory::setWaitForReplicationListener(): Implicitly marking parameter $callback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/lbfactory/ILBFactory.php on line 294

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\ChronologyProtector::shutdown(): Implicitly marking parameter $workCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/ChronologyProtector.php on line 189

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/mediawiki/includes/libs/rdbms/lbfactory/LBFactory.php on line 684

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: SqlBagOStuff::handleWriteError(): Implicitly marking parameter $db as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/objectcache/SqlBagOStuff.php on line 730

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Language::sprintfDate(): Implicitly marking parameter $zone as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/languages/Language.php on line 1150

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Language::getHumanTimestamp(): Implicitly marking parameter $relativeTo as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/languages/Language.php on line 2536

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Language::getHumanTimestamp(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/languages/Language.php on line 2536

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Language::translateBlockExpiry(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/languages/Language.php on line 4136

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\LoadBalancer::getReadOnlyReason(): Implicitly marking parameter $conn as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/loadbalancer/LoadBalancer.php on line 1702

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\LoadBalancer::masterRunningReadOnly(): Implicitly marking parameter $conn as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/loadbalancer/LoadBalancer.php on line 1725

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\LoadBalancer::setTransactionListener(): Implicitly marking parameter $callback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/loadbalancer/LoadBalancer.php on line 1905

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\Database::setTransactionListener(): Implicitly marking parameter $callback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/Database.php on line 3465

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\Database::cancelAtomic(): Implicitly marking parameter $sectionId as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/Database.php on line 3737

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\Database::getCacheSetOptions(): Implicitly marking parameter $db2 as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/Database.php on line 4238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\Database::sourceFile(): Implicitly marking parameter $lineCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/Database.php on line 4277

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\Database::sourceFile(): Implicitly marking parameter $resultCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/Database.php on line 4277

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\Database::sourceFile(): Implicitly marking parameter $inputCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/Database.php on line 4277

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\Database::sourceStream(): Implicitly marking parameter $lineCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/Database.php on line 4313

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\Database::sourceStream(): Implicitly marking parameter $resultCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/Database.php on line 4313

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\Database::sourceStream(): Implicitly marking parameter $inputCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/Database.php on line 4313

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\IMaintainableDatabase::sourceFile(): Implicitly marking parameter $lineCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/IMaintainableDatabase.php on line 111

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\IMaintainableDatabase::sourceFile(): Implicitly marking parameter $resultCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/IMaintainableDatabase.php on line 111

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\IMaintainableDatabase::sourceFile(): Implicitly marking parameter $inputCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/IMaintainableDatabase.php on line 111

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\IMaintainableDatabase::sourceStream(): Implicitly marking parameter $lineCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/IMaintainableDatabase.php on line 132

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\IMaintainableDatabase::sourceStream(): Implicitly marking parameter $resultCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/IMaintainableDatabase.php on line 132

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\IMaintainableDatabase::sourceStream(): Implicitly marking parameter $inputCallback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/IMaintainableDatabase.php on line 132

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\DBConnRef::setTransactionListener(): Implicitly marking parameter $callback as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/DBConnRef.php on line 517

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\DBConnRef::cancelAtomic(): Implicitly marking parameter $sectionId as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/DBConnRef.php on line 531

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Rdbms\ResultWrapper::__construct(): Implicitly marking parameter $db as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php on line 45

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of Wikimedia\Rdbms\IResultWrapper::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php on line 70

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of Wikimedia\Rdbms\IResultWrapper::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php on line 80

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of Wikimedia\Rdbms\IResultWrapper::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php on line 75

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of Wikimedia\Rdbms\ResultWrapper::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php on line 117

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of Wikimedia\Rdbms\ResultWrapper::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php on line 90

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Warning: session_name(): Session name cannot be changed after headers have already been sent in /var/www/mediawiki/includes/Setup.php on line 838

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\PHPSessionHandler::open($save_path, $session_name) should either be compatible with SessionHandlerInterface::open(string $path, string $name): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/PHPSessionHandler.php on line 178

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\PHPSessionHandler::close() should either be compatible with SessionHandlerInterface::close(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/PHPSessionHandler.php on line 193

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\PHPSessionHandler::read($id) should either be compatible with SessionHandlerInterface::read(string $id): string|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/PHPSessionHandler.php on line 207

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\PHPSessionHandler::write($id, $dataStr) should either be compatible with SessionHandlerInterface::write(string $id, string $data): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/PHPSessionHandler.php on line 235

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\PHPSessionHandler::destroy($id) should either be compatible with SessionHandlerInterface::destroy(string $id): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/PHPSessionHandler.php on line 341

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\PHPSessionHandler::gc($maxlifetime) should either be compatible with SessionHandlerInterface::gc(int $max_lifetime): int|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/PHPSessionHandler.php on line 362

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MediaWiki\Session\SessionManager::getSessionById(): Implicitly marking parameter $request as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/session/SessionManager.php on line 201

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MediaWiki\Session\SessionManager::getEmptySession(): Implicitly marking parameter $request as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/session/SessionManager.php on line 243

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MediaWiki\Session\SessionManager::getEmptySessionInternal(): Implicitly marking parameter $request as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/session/SessionManager.php on line 253

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MediaWiki\Session\SessionManagerInterface::getSessionById(): Implicitly marking parameter $request as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/session/SessionManagerInterface.php on line 64

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MediaWiki\Session\SessionManagerInterface::getEmptySession(): Implicitly marking parameter $request as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/session/SessionManagerInterface.php on line 76

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MediaWiki\Session\CookieSessionProvider::setForceHTTPSCookie(): Implicitly marking parameter $backend as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/session/CookieSessionProvider.php on line 268

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MapCacheLRU implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /var/www/mediawiki/includes/libs/MapCacheLRU.php on line 37

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: User::newFromSession(): Implicitly marking parameter $request as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/user/User.php on line 756

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: User::getActorId(): Implicitly marking parameter $dbw as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/user/User.php on line 2501

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: User::resetOptions(): Implicitly marking parameter $context as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/user/User.php on line 3450

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\ScopedCallback::consume(): Implicitly marking parameter $sc as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/vendor/wikimedia/scoped-callback/src/ScopedCallback.php on line 55

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\ScopedCallback::cancel(): Implicitly marking parameter $sc as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/vendor/wikimedia/scoped-callback/src/ScopedCallback.php on line 64

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 625

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\Session::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 631

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\Session::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 643

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\Session::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 637

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\Session::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 655

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\Session::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 649

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\Session::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 665

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of & MediaWiki\Session\Session::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 678

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\Session::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 688

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Return type of MediaWiki\Session\Session::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/mediawiki/includes/session/Session.php on line 693

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MWTimestamp::getHumanTimestamp(): Implicitly marking parameter $relativeTo as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MWTimestamp.php on line 61

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MWTimestamp::getHumanTimestamp(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MWTimestamp.php on line 61

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MWTimestamp::getHumanTimestamp(): Implicitly marking parameter $lang as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MWTimestamp.php on line 61

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MWTimestamp::getRelativeTimestamp(): Implicitly marking parameter $relativeTo as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MWTimestamp.php on line 147

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MWTimestamp::getRelativeTimestamp(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MWTimestamp.php on line 147

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MWTimestamp::getRelativeTimestamp(): Implicitly marking parameter $lang as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MWTimestamp.php on line 147

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Wikimedia\Timestamp\ConvertibleTimestamp::convert(): Optional parameter $style declared before required parameter $ts is implicitly treated as a required parameter in /var/www/mediawiki/vendor/wikimedia/timestamp/src/ConvertibleTimestamp.php on line 227

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: OutputPage::addWikiTextAsInterface(): Implicitly marking parameter $title as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/OutputPage.php on line 1784

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: OutputPage::addWikiTextAsContent(): Implicitly marking parameter $title as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/OutputPage.php on line 1834

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: OutputPage::addVaryHeader(): Implicitly marking parameter $option as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/OutputPage.php on line 2338

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: ResourceLoaderModule::getDependencies(): Implicitly marking parameter $context as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/resourceloader/ResourceLoaderModule.php on line 352

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Pingback::__construct(): Implicitly marking parameter $config as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/Pingback.php on line 56

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Pingback::__construct(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/Pingback.php on line 56

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: ApiMain::setContinuationManager(): Implicitly marking parameter $manager as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/api/ApiMain.php on line 367

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: ApiBase::setContinuationManager(): Implicitly marking parameter $manager as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/api/ApiBase.php on line 713

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: ApiBase::makeMessage(): Implicitly marking parameter $params as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/api/ApiBase.php on line 1818

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: ApiBase::errorArrayToStatus(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/api/ApiBase.php on line 1843

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Creation of dynamic property ApiMain::$mCommit is deprecated in /var/www/mediawiki/includes/api/ApiMain.php on line 292

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: SimpleCaptcha::needCreateAccountCaptcha(): Implicitly marking parameter $creatingUser as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/extensions/ConfirmEdit/SimpleCaptcha/SimpleCaptcha.php on line 854

Warning: Cannot modify header information - headers already sent by (output started at /var/www/mediawiki/includes/libs/rdbms/database/IDatabase.php:1625) in /var/www/mediawiki/includes/Feed.php on line 294

Warning: Cannot modify header information - headers already sent by (output started at /var/www/mediawiki/includes/libs/rdbms/database/IDatabase.php:1625) in /var/www/mediawiki/includes/Feed.php on line 300

Warning: Cannot modify header information - headers already sent by (output started at /var/www/mediawiki/includes/libs/rdbms/database/IDatabase.php:1625) in /var/www/mediawiki/includes/WebResponse.php on line 72

Warning: Cannot modify header information - headers already sent by (output started at /var/www/mediawiki/includes/libs/rdbms/database/IDatabase.php:1625) in /var/www/mediawiki/includes/WebResponse.php on line 72

Warning: Cannot modify header information - headers already sent by (output started at /var/www/mediawiki/includes/libs/rdbms/database/IDatabase.php:1625) in /var/www/mediawiki/includes/WebResponse.php on line 72

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/api.php?action=feedcontributions&feedformat=atom&user=Patricio+P%C3%A1ez WikiCabal - Contribuciones del usuario [es] 2025-06-07T01:12:17Z Contribuciones del usuario MediaWiki 1.32.1
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=PythonCabal&diff=131812 PythonCabal 2018-07-31T13:02:32Z <p>Patricio Páez: /* Reuniones anteriores */ Remover sección sobrante</p> <hr /> <div>&#039;&#039;&#039;PythonCabal&#039;&#039;&#039; es el grupo de usuarios de [http://python.org Python] en Guadalajara. Nos reunimos el último lunes de cada mes de 19:00 a 21:00 horas en la cafetería de HP en Loma Bonita ([http://maps.google.com/maps/ms?msid=214712019379957164455.0004aa115be371a0f4073&amp;msa=0&amp;ll=20.636941,-103.408792&amp;spn=0.007068,0.013797 mapa]). ¡Los principantes son bienvenidos! - Python es [http://xkcd.com/353/ sencillo y fácil de aprender]<br /> <br /> Inscríbete en la [http://groups.google.com/group/pythoncabal lista de correos] para que recibas los avisos y puedas hacer preguntas. Síguenos en [https://twitter.com/pythoncabalgdl twitter] y [https://plus.google.com/u/0/112819024385203685673/posts Google+]<br /> <br /> = Principiantes =<br /> <br /> Empieza aquí:<br /> *Lee el [http://docs.python.org/3/tutorial/index.html tutorial de Python3] oficial, explica desde cero y con bastantes ejemplos. Existe el [http://docs.python.org.ar/tutorial/contenido.html tutorial de Python 2.7] en Español.<br /> <br /> Practica Python sin necesidad de instalarlo:<br /> *Haz los ejercicios en [http://codingbat.com/python CodingBat], solo necesitas un navegardor web. Puedes crear una cuenta para ir guardando el avance entre sesiones.<br /> <br /> Instálalo en tu PC:<br /> *Instala [[Python 3#Instalar|Python 3]], descargas 10MB y toma no más de un minuto y hacer click unas tres veces en &#039;&#039;Ok&#039;&#039; para instalarlo.<br /> <br /> Practica con Python ya instalado:<br /> *Haz los [[Python Koans|Koans de Python]]<br /> <br /> Colabora con más participantes en PythonCabal, publica tu código para que otros lo conozcan y colaboren contigo:<br /> *Instala [[Instalación de Git|Git]] - una herramienta para el control de versiones<br /> *Crea una cuenta en [[GitHub]] - un lugar para compartir código y proyectos<br /> <br /> En caso de que tengas alguna duda, pregunta en la lista de correos.<br /> <br /> = Temas para siguientes reuniones =<br /> *[https://docs.google.com/document/d/1a8urS0S5h8E4U9YIZwRF3oSO1ZJ3Qzg0zSA61CVBf54/edit#heading=h.s2wwc772ieew Temas de interés para PythonCabal en 2014]<br /> <br /> = Reuniones anteriores =<br /> == 2018 ==<br /> === Julio 30 ===<br /> * Python 3.7 se liberó el 27 de junio<br /> ** [https://docs.python.org/3/whatsnew/3.7.html What’s New In Python 3.7]<br /> ** las llaves de los diccionarios preservan el orden en que fueron insertadas<br /> ** nueva opción de línea de comando &#039;&#039;-X utf8&#039;&#039; y variable de entorno [https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUTF8 PYTHONUTF8] para establecer este modo<br /> ** Referencias:<br /> *** https://docs.python.org/3/using/cmdline.html#environment-variables<br /> *** https://docs.python.org/3/using/cmdline.html#envvar-PYTHONIOENCODING<br /> *** https://github.com/avian2/unidecode<br /> <br /> * Vacaciones permanentes de Guido<br /> ** [https://mail.python.org/pipermail/python-dev/2018-April/152716.html PEP-572 Assignment Expressions] lo propuso Chris Angelico y entró a la lista de desarrolladores en abril de 2018<br /> ** [https://mail.python.org/pipermail/python-dev/ archivos] de la lista python-dev de los desarrolladores. Hay conversaciones en abril, mayo, junio y julio<br /> ** [https://mail.python.org/pipermail/python-committers/2018-July/005664.html Transfer of power] de Guido<br /> ** [https://mail.python.org/pipermail/python-committers/2018-July/005796.html An alternative governance model] de Barry Warsaw<br /> <br /> * Acceso directo a discos duros<br /> <br /> Se puede escribir a los discos duros en forma similar a &#039;&#039;dd&#039;&#039;. Este ejemplo se probó con Python 2.5:<br /> &lt;source lang=&quot;python&quot;&gt;<br /> print &#039;Start copying from sdb to sda&#039;<br /> <br /> sda = open(r&#039;\\.\PhysicalDrive0&#039;, &#039;rb+&#039;)<br /> sdb = open(r&#039;\\.\PhysicalDrive1&#039;, &#039;rb+&#039;)<br /> <br /> for i in range(64):<br /> print &#039;sector&#039;, i + 1<br /> sector = sdb.read(512)<br /> print len(sector)<br /> sda.write(sector)<br /> <br /> sda.close()<br /> sdb.close()<br /> print &#039;Done&#039;<br /> &lt;/source&gt;<br /> <br /> * PythonDay 2018<br /> ** [https://www.papercall.io/pydaymx2018 Call for papers]<br /> ** http://pythonday.mx/<br /> <br /> Asistieron: Miguel, David, Mayela y Patricio<br /> <br /> === Marzo 26 ===<br /> * Exponiendo una API escrita en C++ hacia Python 2 y 3 por Sandino Flores, nos explicó algunas técnicas para que bibliotecas hechas en C++ puedan ser usadas desde python 2 y 3.<br /> <br /> == 2017 ==<br /> === Noviembre 27 ===<br /> * [https://pypi.python.org/pypi/pudb pudb] el depurador en consola creado por Andreas Kloeckner. Mostramos un programa de ejemplo con algunas fallas, las cuales intentamos encontrar y arreglar con la ayuda pudb.<br /> <br /> * Selenium<br /> ** ActionChains<br /> ** find_element_by_xpath<br /> ** special keys<br /> <br /> [https://seleniumhq.github.io/selenium/docs/api/py/index.html Selenium Client Driver] -&gt; [https://seleniumhq.github.io/se$ selenium package API]<br /> <br /> [http://selenium-python.readthedocs.io/index.html Selenium with Python] by Baiju Muthukadan<br /> <br /> [https://www.youtube.com/watch?v=4TmKFZy-ioQ Automating Instagram with Python and Selenium] at EuroPython2017 by Tim Grossmann<br /> [http://slides.com/timgrossmann/deck#/ slides]<br /> <br /> Asistieron Gabriel y Patricio.<br /> <br /> === Agosto 28 ===<br /> * Concatenación de cadenas con puntuación: comparación de dos métodos, y cómo aplicamos Test Driven Development y [https://docs.pytest.org/en/latest/ pytest] en un código antiguo para llegar al nuevo método.<br /> * [https://tech.io/playgrounds/500/advanced-python-features Advanced Python Features], es uno de muchos [https://tech.io/explore playgrounds] en https://tech.io/, una plataforma en la cual podemos compartir y aprender conocimientos sobre lenguajes de programación y algoritmos.<br /> * emacs: configuración para trabajar con Python. [http://pp.com.mx/python/init.el init.el] de Patricio, basado en el que [https://www.youtube.com/watch?v=0cZ7szFuz18 presentó] Andrea Crotti en EuroPython 2013.<br /> <br /> Asistieron Jesús, Adolfo, Luis Manuel, Roberto, Juan José, Christopher y Patricio<br /> <br /> === Junio 26 ===<br /> * Tutorial de [https://kivy.org/ Kivy] por [https://www.youtube.com/watch?v=4dPee4PcknI&amp;list=PL9E0FASXyOCYDkDcdNh-igL_tZTLMLcgZ Rodolfo Torres]: Creando el juego de snake<br /> ** El tutorial fue similar al reciente de Rodolfo: [https://www.youtube.com/watch?v=onfix2QrES8 Snake game made in Python using Kivy!], además de otros.<br /> <br /> Asistieron Roberto, Rafael, Erick, Carlos y Patricio<br /> <br /> === Mayo 29 ===<br /> * Acerca de [https://us.pycon.org/2017/schedule/talks/list/ PyCon 2017] que terminó la semana anterior:<br /> ** Los [http://pyvideo.org/events/pycon-us-2017.html videos de las presentaciones] están disponibles en PyVideo.<br /> ** Bienvenida por Brandon Rhodes<br /> ** Keynote inicial &#039;&#039;The unexpected effectiveness of Python in science&#039;&#039; por Jack Vanderplas, autor de los libros: &#039;&#039;Python Data Science Handbook&#039;&#039; y &#039;&#039;A Whirlwind Tour of Python&#039;&#039;.<br /> * [https://developers.google.com/edu/python/ Google Python Class] es un curso para principiantes recomenado por Teo.<br /> * Invitación a colaborar en [https://github.com/juanjosegzl/learningpygame learningpygame], un juego basado en PyGame creado por Juan José.<br /> <br /> Asistieron Hugo, Teo, Juan José, Roberto y Patricio<br /> <br /> === Abril 24 ===<br /> * Usando [http://xapian.org/ Xapian] desde Python<br /> <br /> Asistieron Erick, César, Omar, Sergio, Rafael y Patricio<br /> <br /> === Marzo 27 ===<br /> * Cómo escribir una extensión en C.<br /> * Opciones para escribir XML<br /> ** [https://docs.python.org/3/library/xml.etree.elementtree.html ElementTree]<br /> ** [https://pypi.python.org/pypi/xmlwitch/0.3 xmlwitch]<br /> <br /> Asistieron Roberto, Rodolfo, Lourdes, Sergio, Rafael y Patricio.<br /> <br /> === Febrero 27 ===<br /> * Notebooks de Jupyter en la nube<br /> * Definiendo clases dinámicamente con [https://docs.python.org/3/library/functions.html#type type()], [https://docs.python.org/3/library/functions.html#setattr settatr()], [https://docs.python.org/3/library/functions.html#getattr getattr()] y closures.<br /> * Nuevas funciones [https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_called assert_called] y [https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_called_once assert_called_once] de la clase Mock en Python 3.6 para pruebas unitarias.<br /> Ana, Karina, Sergio, Rafael, Manuel, Patricio<br /> <br /> === Enero 30 ===<br /> * Qué hay de nuevo en Python 3.6<br /> ** [https://docs.python.org/3/reference/lexical_analysis.html#f-strings Cadenas con formato]: f&#039;hola {nombre}&#039;<br /> ** [https://docs.python.org/3/reference/lexical_analysis.html#integer-literals guión bajo en enteros]: 1_654_321<br /> * Arquitectura de software. Mostramos los volúmenes del [http://aosabook.org/en/index.html The Architecture of Open Source Applications] y visitamos los proyectos en Python que están incluídos.<br /> <br /> Sergio, Patricio<br /> <br /> == 2016 ==<br /> === Diciembre 5 ===<br /> * AWS con Python<br /> Asistieron Mauricio, Sergio, Miguel y Patricio<br /> <br /> === Octubre 31 ===<br /> <br /> * Una aplicación web [https://github.com/stack-this/hunter-price Buscador de precios] usando [https://falconframework.org/ Falcon], un framework minimalista<br /> * El framework de pruebas [http://doc.pytest.org/en/latest/ pytest]. <br /> <br /> Sergio, Mauricio, Patricio<br /> <br /> === Septiembre 26 ===<br /> * PyAutoGUI<br /> * Virtualenv: env/bin/python, no usar activate<br /> <br /> Sergio, Mauricio, Luis, Juan José, un compañero de Juan José, Patricio<br /> <br /> === Agosto 29 ===<br /> * Recursos para principiantes<br /> * Diccionarios por Mauricio, usando Komodo<br /> * OrderedDict, multidict<br /> <br /> Sergio, Mauricio, Eduardo, Omar, Patricio<br /> <br /> === Julio 25 ===<br /> * Uso de pymode en Vim<br /> * Uso de la función trace del intérprete para depurar errores<br /> * Gerónimo invitó al Hackaton de OpenStack que será en septiembre<br /> <br /> Sergio, Mauricio, Gerónimo, Patricio<br /> <br /> === Junio 27 ===<br /> <br /> * Conversión de clave Morse a texto utilizando herramientas de Scipy. Explicación paso a paso usando iPython.<br /> <br /> === Mayo 30 ===<br /> <br /> * Funciones de alto nivel y decoradores por Sergio<br /> <br /> === Abril 25 ===<br /> <br /> * Cómo usar el módulo argparse para agregar comandos y opciones de línea de comando a tus scripts<br /> <br /> === Marzo 28 ===<br /> <br /> * Guardar y cargar el estado de una aplicación [https://www.youtube.com/watch?v=5lLxt4TnKCk#t=37 El hangout]<br /> <br /> === Enero 25 ===<br /> * [http://jupyter.org Jupyter]. Rafael nos compartió un ejemplo de alternativas de estilo Python al codificar una función que convierte CamelCase a camel_case, utilizando [https://jupyter.tucif.mx/ una instancia de Jupyter] en su sitio personal (se requieren credenciales), y Sergio nos mostró un ejemplo en un cuaderno con uso de gráficas. [https://www.youtube.com/watch?v=vJd8Q3cL2cA El hangout] 1 hora 28 minutos.<br /> <br /> Asistieron Rafael, Sergio, Manuel, Fabián y Patricio; Gabriel participó por el hangout.<br /> <br /> == 2015 ==<br /> === Octubre 26 ===<br /> * Uso the [http://libvirt.org/ libvirt] desde Python para el manejo de máquinas virtuales, por Jaime García. [https://www.youtube.com/watch?v=wEl7WqXDh_I El hangout].<br /> <br /> === Agosto 31 ===<br /> * Introducción a [https://micropython.org/ Micro Python], Python 3 ejecutando en microcontroladores, por Patricio. Ejecutamos y modificamos varios de los ejemplos en [http://micropython.org/live/ Micro Python Live]. [http://slides.com/patriciopaez/micropython#/ Las láminas].<br /> * Mostrar un ejemplo de localización de cara en una imagen de la webcam usando [http://opencv.org/ OpenCV], por Sergio.<br /> [https://plus.google.com/u/0/b/112819024385203685673/events/cgdvndrn26j35kmbaliiok3arfg El hangout] de esta sesión.<br /> Asistimos Rafael, Sergio, Gerónimo, Beto, Patricio.<br /> <br /> === Mayo 25 ===<br /> === Abril 27 ===<br /> === Marzo 30 ===<br /> === Febrero 23 ===<br /> * Mostramos ejemplos de uso de [https://bitbucket.org/jurko/suds suds-jurko] con Python 3.4 en Fedora, para consumir servicios web. Se utilizó http://www.webservicex.net/globalweather.asmx?WSDL que proporcionar información del clima por ciudad.<br /> * Repasamos los avances en [https://github.com/LinuxCabal/admin-cfdi admin-cfdi].<br /> ** Para usar los explicit waits de Selenium queremos ejercitar el método [https://github.com/LinuxCabal/admin-cfdi/blob/master/admincfdi.py#L377 _download_sat(data)] de Application, sin la intefase gráfica y usando pdb, para así poder realizar pruebas funcionales fácilmente.<br /> Asistimos Quetza, Miguel, Sergio, Patricio.<br /> <br /> === Enero 26 ===<br /> * Presentamos [https://github.com/LinuxCabal/admin-cfdi admin-cfdi], el proyecto en el cual empezamos a colaborar. Intentamos ejecutar admin-cfdi en un ambiente virtual con Python 3.3 en Fedora, pero tuvimos fallas. Se creó el [https://github.com/LinuxCabal/admin-cfdi/issues/7 issue 7] en github al respecto.<br /> Asistimos Rafael, Sergio, Gabriel, Patricio.<br /> <br /> == 2014 ==<br /> === Noviembre 24 ===<br /> * Widgets del módulo ttk de tkinter de la librería estándar, mostramos ejemplos de TreeView y NoteBook, mencionamos los demás widgets avanzados de ttk.<br /> * Comentamos ideas sobre cómo organizar un primer sprint. Empezar por escoger un proyecto ya existente al cual podamos contribuirle documentación, corregir bugs, implementar mejoras, etc.<br /> Asistimos Miguel, Gabriel, Sergio, Patricio.<br /> === Octubre 27 ===<br /> * Invitación al [http://coderetreat.mx/ Global Day of Coderetreat] que tendrá lugar el sábado 15 de noviembre en Guadalajara y Colima.<br /> * Introducción y demostración del manejo de Bluetooth desde Python 3 usando los módulos [https://pypi.python.org/pypi/PyBluez PyBluez] y [https://pypi.python.org/pypi/lightblue/0.2 lightblue], por Iván. Rafael participó conectado remotamente.<br /> * Introducción al módulo [https://docs.python.org/3/library/asyncio.html asyncio] para entrada/salida asíncrona, que se introdujo en la biblioteca estándar en Python 3.4 por Patricio. Ver la [http://wiki.cabal.mx/wiki/Introducci%C3%B3n_a_asyncio referencia] que tenemos en el wiki de LinuxCabal.<br /> === Septiembre 29 ===<br /> * Una demostración del módulo [https://docs.python.org/3/library/sqlite3.html sqlite3] de la biblioteca estándar.<br /> El [http://www.youtube.com/watch?v=gVwt2f7ZaxA video] en Youtube. 1 hora 17 minutos. Asistieron Abraham, Gabriel y tres participantes más.<br /> === Agosto 25 ===<br /> * Módulos útiles de la librería estándar de Python 3:<br /> ** textwrap<br /> ** traceback<br /> ** urllib.request<br /> ** tkinter<br /> ** cmd<br /> El [https://www.youtube.com/watch?v=rVNDN1cnFYg video] en Youtube, 1 hora 14 minutos. Asistieron Rafael, Abraham y Gabriel.<br /> <br /> === Julio 28 ===<br /> * EuroPython en Berlín, terminó una semana antes, comentarios acerca de los temas presentados.<br /> * &#039;&#039;Flying high: OpenGL from Python&#039;&#039;, mostrar este desarrollo de Jonathan Hartley para generar figuras usando pyglet y OpenGL.<br /> El [https://www.youtube.com/watch?v=R3ZWxeEHhR4 video] en YouTube, 40 minutos. Durante la animación a partir del minuto 27, el audio se entrecorta.<br /> <br /> === Junio 30 ===<br /> * Hackeando Open Stack por Gerónimo y Víctor<br /> * Tip sobre lectura de XML por Patricio<br /> El [https://www.youtube.com/watch?v=_RmejygsS60 video] en YouTube, 1 hora 53 minutos.<br /> <br /> === Mayo 26 ===<br /> *Depurando fallas en Python con gdb. Vimos un ejemplo en el que se produce un &#039;&#039;segmentation fault&#039;&#039; que termina el interpretador; en este caso [https://docs.python.org/3/library/pdb.html pdb] no nos puede ayudar. Usando gdb, éste atrapa el &#039;&#039;segmentation fault&#039;&#039; y nos permite examinar el estado en que se encontraban tanto el interpretador como nuestro código de Python. Usamos los paquetes python-dbg (Debian) o python-debuginfo (Redhat).&lt;br&gt;Ver:<br /> **El artículo [https://wiki.python.org/moin/DebuggingWithGdb DebuggingWithGdb] en el wiki de python.org.<br /> **La sección [http://scipy-lectures.github.io/advanced/debugging/index.html#debugging-segmentation-faults-using-gdb Debugging segmentation faults using gdb] en [http://scipy-lectures.github.io/index.html Python Scientific Lecture Notes]<br /> Usamos este ejemplo que produce el error:<br /> &lt;source lang=&quot;python&quot;&gt;<br /> class Clase:<br /> def metodo(self):<br /> from ctypes import string_at<br /> string_at(0xffff0000)<br /> <br /> i = Clase()<br /> i.metodo()<br /> &lt;/source&gt;<br /> Y estos comandos:<br /> python3 segfault.py<br /> python3 -m pdb segfault.py<br /> gdb --args python3 segfault.py<br /> <br /> *Comentamos sobre el [http://www.raspberrypi.org/raspberry-pi-compute-module-new-product/ Compute Module] de Raspbery Pi, introducido en Abril de 2014.<br /> *Sugerimos ver el tema [https://www.youtube.com/watch?v=jzQmQDIii14&amp;index=13&amp;list=WL Best Practices for Software Engineers] (YouTube 1 hora y 20 minutos) presentado por Shannon -jj Behrens en la reunión de Bay Piggies de mayo de 2014.<br /> <br /> [https://www.youtube.com/watch?v=MQyvsmkdN8U El video] (33 minutos). Asistieron Rafael, Sergio e Iván.<br /> <br /> === Abril 28 ===<br /> Resumen de PyCon 2014 por Patricio, [https://www.youtube.com/watch?v=8FEbhytlHzE el video] (YouTube 30 minutos) y [https://docs.google.com/presentation/d/1NHKNYjDd-hGiKsGtCBBuv7Q8qeifO09i54klonBzFpY/present#slide=id.p la presentación] con 12 láminas. Tuvimos tres participantes.<br /> <br /> === Marzo 31 ===<br /> Gerónimo y Víctor presentaron OpenStack. El video está [https://www.youtube.com/watch?v=r3kJGzvkMGM aquí] (YouTube).<br /> <br /> === Febrero 24 ===<br /> Rafael nos presentó una introducción a Flask. El video está [https://www.youtube.com/watch?v=prk0IMPKC6Q aquí] (YouTube 1 hora 6 minutos) Empieza a los 3 minutos 30 segundos y termina a los 44 minutos. Rafael mostró:<br /> * Qué es un microframework<br /> * El ejemplo Hello world y cómo funciona.<br /> * El ejemplo &#039;&#039;días para el futuro&#039;&#039;, similar al anterior pero hace un cálculo con fechas.<br /> * ToDo List, comenzando por las necesidades.<br /> ** Uso del módulo sqlite3 para una base de datos sqlite.<br /> ** El script &#039;&#039;todo.sql&#039;&#039; para crear la tabla<br /> ** Las funciones de la capa para accesar la base de datos.<br /> ** El uso de las plantillas con Jinja2, usando herencia, un ciclo y un filtro.<br /> ** La operación de las tres funciones controladoras o vistas.<br /> <br /> Patricio compartió cómo usar algunas opciones de línea de comandos del interpretador de Python, y en qué casos son útiles. Empieza en el minuto 49 con 15 segundos.<br /> * -V versión del interpretador<br /> * -c &lt;commmando(s)&gt;<br /> * -m &lt;modulo&gt;<br /> * -h<br /> * PYTHONENCODING=utf-8 útil en Python 2 para eliminar el error &#039;&#039;UnicodeEncodeError: &#039;ascii&#039; codec can&#039;t encode characters in position 0-1: ordinal not in range(128)&#039;&#039; en comandos print con cadenas unicode, como &#039;&#039;print u&quot;á&quot;&#039;&#039;.<br /> * PYTHONPATH=. para utilizar módulos o paquetes sin instalarlos en un ambiente virtual o en el Python del sistema.<br /> <br /> Fuimos solamente tres participantes y cinco personas se conectaron al hangout.<br /> <br /> === Enero 25 ===<br /> Fue en sábado y en las instalaciones de LinuxCabal A.C. Mauricio Baeza, creador de [http://facturalibre.org/ Factura Libre], estuvo en Guadalajara y nos [https://www.youtube.com/watch?v=8P6HzRyfWns habló sobre esta aplicación] (YouTube 1 hora 47 minutos). Es una extensión de Libre Office implementada en Python.<br /> <br /> == 2013 ==<br /> <br /> === Octubre 28 ===<br /> No tuvimos asistentes a la reunión presencial. No pudimos iniciar el hangout, debido a [https://productforums.google.com/d/msg/hangouts/vYsaeEnXJXs/ypZC2TxKzHMJ un problema conocido] en Debian. Se resolvió después desinstalando el paquete &lt;code&gt;libudev0&lt;/code&gt;<br /> <br /> === Septiembre 30 ===<br /> Gabriel nos compartió cómo usó el módulo curses para mostrar resultados de medir transferencias de datos entre varios servidores virtuales. Vimos el código y los pasos principales. Tuvimos 5 participantes.<br /> <br /> === Agosto 26 ===<br /> *Programación en OpenGL con Python, por Sergio.<br /> *Procesando información con Python, por Patricio. Usando módulos útiles de la biblioteca estándar de Python 3 para descargar, traducir y procesar datos disponibles en internet.<br /> Ver [http://www.youtube.com/watch?v=twsVXyzhFas el hangout], 1 hora. Tuvimos 8 participantes.<br /> <br /> === Julio 29 ===<br /> Introducción a [http://seleniumhq.org Selenium] para automatizar el navegador web. El tutorial incluyó:<br /> *Conceptos básicos de Selenium<br /> *Crear un entorno virtual con Python 3<br /> *Instalar los bindings de Python para Selenium<br /> *Crear un ejemplo con Firefox para probar la página python.org y su función de búsqueda<br /> *Crear pruebas funcionales usando unittest<br /> Buena parte de la sesión fue depurar los primeros dos pasos para los principantes. Alberto encontró el código para usar un proxy en el Webdriver, y lo probamos con Chrome. Tuvimos 8 participantes. Se puede ver la grabación de la reunión por hangout-youtube. Surgieron las dudas sobre la automatización por navegador. Se mostro el navegador que usa Selenium, así como los reportes que pudiéramos esperar del testing.<br /> <br /> El resumen del tema en 28 minutos está en [http://www.youtube.com/watch?v=4GgsuYswYDE este video] en youtube.com.<br /> <br /> === Junio 24 ===<br /> Tuvimos una introducción a [http://ipython.org IPython] con Python 3, mostrando aspectos básicos del modo de consola, el modo gráfico y el modo de cuaderno HTML. Mostramos [http://matplotlib.org/users/shell.html ejemplos] de crear gráficas con matplotlib. En Debian/Ubuntu se tienen que instalar los paquetes:<br /> * ipython3<br /> * ipython3-qtconsole<br /> * ipython3-notebook<br /> * python3-matplotlib en Ubuntu 13.04 o Debian experimental<br /> El comando para terminal:<br /> ipython<br /> Para consola gráfica con soporte de matplotlib:<br /> ipython qtconsole --pylab<br /> Para cuaderno HTML con matplotlib:<br /> ipython notebook --pylab<br /> <br /> Comentamos algunos trucos en el archivo &lt;code&gt;.vrimrc&lt;/code&gt; de vim para editar programas de Python, y finalmente revisamos los trucos más relevantes del artículo [http://stackoverflow.com/questions/101268/hidden-features-of-python Hidden features of Python] en StackOverflow.com.<br /> <br /> Tuvimos 13 participantes, algunos de primera vez, y esta vez sí pedimos pizzas.<br /> <br /> === Mayo 27===<br /> Hicimos el ejercicio &#039;&#039;Calc Stats&#039;&#039; de [http://www.cyber-dojo.com/ cyber-dojo] durante la sesión. Sugerimos hacer la práctica en parejas en una misma PC, algunos lo hicieron en individual, y explicamos que lo importante es observar el proceso, no se trata de completar el ejercicios en el menor número de pasos. Gracias a Miguel aprendimos que es posible renombrar los archivos iniciales &lt;code&gt;test_untitled.py&lt;/code&gt; y &lt;code&gt;untitled.py&lt;/code&gt;, por ejemplo a &lt;code&gt;test_stats.py&lt;/code&gt; y &lt;code&gt;stats.py&lt;/code&gt;, y también es posible crear archivos.<br /> <br /> Creamos la sesión [http://www.cyber-dojo.com/dashboard/show/9196D2 9196D2] que está disponible para repasarla: En la página principal teclear el codigo de la sesión en el campo &#039;&#039;practice-id&#039;&#039; y hacer click en &#039;&#039;Review&#039;&#039;. Escogimos uno de los ejercicios más sencillos, para así concentrarnos en el proceso de Test-Driven Development más que en el algoritmo del problema. Los ejercicios más sencillos en cyber-dojo son:<br /> *&#039;&#039;Calc Stats&#039;&#039;<br /> *&#039;&#039;Leap Years&#039;&#039;<br /> *&#039;&#039;Fizz Buzz&#039;&#039;<br /> En el siguiente nivel en donde ya toma relevancia el algoritmo del problema, están los ejercicios:<br /> *&#039;&#039;LCD Digits&#039;&#039;<br /> *&#039;&#039;100 Doors&#039;&#039;<br /> *&#039;&#039;Prime Factors&#039;&#039;<br /> <br /> Rafael nos recomendó inscribirnos a estos dos boletines semanales con noticias sobre Python:<br /> *[http://pythonweekly.com Python Weekly]<br /> *[http://pycoders.com Pycoders]<br /> <br /> Asistimos 8 personas, de las cuales dos eran de primera vez.<br /> <br /> === Abril 29 ===<br /> Practicamos con una Raspberry Pi modelo B, hicimos este ejemplo de [http://raspberry.io/projects/view/reading-and-writing-from-gpio-ports-from-python/ leer de y escribir a puertos con Python] usando el módulo GPIO. Usamos un protoboard y [http://www.adafruit.com/products/794 cables] que en un extremo tienen plug para conectar a los pines del cabezal de entrada/salida en la Rasberry Pi, y en el otro extremo tienen punta para insertarse en el protobard.<br /> <br /> Logramos encender un LED conectado a la línea 25, pero la lectura del estado de un interruptor conectado en la línea 4 dió siempre 0. La razón es que el otro extremo del interruptor estaba conectado a tierra. La línea 4 se programa como entrada con una resistencia a tierra mediante el parámetro &lt;code&gt;pull_up_down=GPIO.PUD_DOWN&lt;/code&gt; (ver el listado abajo), por lo que era necesario conectar el interruptor a 3V para que suba el voltaje de esa línea y la lectura reporte 1.<br /> &lt;source lang=&quot;python&quot;&gt;<br /> import RPi.GPIO as GPIO<br /> <br /> GPIO.setmode(GPIO.BCM)<br /> GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)<br /> GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)<br /> GPIO.add_event_detect(4, GPIO.BOTH)<br /> <br /> def my_callback():<br /> GPIO.output(25, GPIO.input(4))<br /> GPIO.add_event_callback(4, my_callback)<br /> &lt;/source&gt;<br /> También probamos un [http://www.adafruit.com/products/814 adaptador WiFi USB miniatura], se conectó a la red inalámbrica.<br /> Tuvimos 8 participantes en esta reunión.<br /> <br /> === Marzo 25 ===<br /> El tema fue [https://us.pycon.org/2013/ PyCon 2013]. La conferencia se llevó a cabo del 15 al 17 de marzo en Santa Clara, California, una semana antes de la reunión, seguida de los sprints del 18 al 21 de marzo ahí mismo. Dos de los participantes de PythonCabal asistieron a la conferencia y a los sprints, y compartieron sus impresiones.<br /> <br /> *Mostramos algunas imágenes del llenado por voluntarios de las 2,500 bolsas con promocionales antes de la conferencia, de la feria de empleos (había poco más de 50 empresas buscando programadores de Python), la sesión de posters y de los sprints.<br /> <br /> *Se comentaron las aportaciones durante los sprints:<br /> **Rafael contribuyó a CPython para cerrar el bug [http://bugs.python.org/issue17448 17448] &#039;&#039;test_sax should skip when no xml parsers are found&#039;&#039;. Rafael recomendó acercarse a hacer aportaciones en CPython, no es difícil y hay una [http://docs.python.org/devguide/#contributing Guía de cómo contribuir] muy bien explicada.<br /> **Patricio contribuyó en [https://pypi.python.org/pypi/deform/0.9.7 deform] (Un sistema para generación y validación de formas HTML) con el issue [https://github.com/Pylons/deform/issues/149 149] &#039;&#039;Sequence of simple types does not deserialize unless it has a name&#039;&#039;: un usuario propuso un parche, pero faltaba inmplementar las pruebas unitarias; el issue [https://github.com/Pylons/deform/pull/142 142] &#039;&#039;Add support for html5 native time-related widgets&#039;&#039;: un usuario propuso cambios, entonces se realizaron pruebas funcionales automatizadas en una instalación local de [http://deformdemo.repoze.org/ deformdemo] usando [http://docs.seleniumhq.org/ Selenium] y se les dió visto bueno a los cambios.<br /> <br /> *Rafael comentó sobre la reunión de organizadores de grupos de usuarios de Python que hubo el viernes 15 de marzo. Patricio mejoró las páginas wiki de [http://wiki.python.org/moin/LocalUserGroups Grupos de usuarios] e [http://wiki.python.org/moin/StartingYourUsersGroup Iniciar un grupo de usuarios de Python] durante los sprints.<br /> <br /> *Mostramos la página que lista los más de 100 [http://pyvideo.org/category/33/pycon-us-2013 videos de PyCon 2013]<br /> <br /> *Proyectamos el video de la presentación [http://pyvideo.org/video/1677/how-the-internet-works How the internet works] por Jessica McKellar del 15 de marzo. Dura 30 minutos incluyendo la sesión de preguntas, está ameno y muestra ejemplos del uso de [http://www.secdev.org/projects/scapy/ scapy], un servidor HTTP echo con [http://twistedmatrix.com/trac/ twisted], un cliente HTTP con urllib2 y otros.<br /> <br /> Tuvimos 7 participantes en la reunión. No hicimos hangout porque la WiFi nos dió problemas. ¡Gracias a Gabriel que logró conectar su laptop con Ubuntu y así pudimos navegar!.<br /> <br /> === Febrero 25 ===<br /> Instalamos Pyramid en un ambiente virtual de Python 3.3, resolviendo algunos errores en el proceso, y corrimos las pruebas. Después corrimos la aplicación más sencilla de un solo archivo, y quedó como tarea iniciar cada quien el tutorial del wiki con SQL Alchemy. Los pasos están descritos en [[Cómo contribuir a Pyramid]]. Tuvimos 6 participantes, más Armando que se conectó al Hangout.<br /> === Enero 26 ===<br /> Se mostró [[Cómo contribuir a StringTemplate]], un módulo de plantillas, empezando el trabajo para migrar la versión que funciona en Python 2 a Python 3.3. Los pasos están descritos en [[Cómo contribuir a StringTemplate]].<br /> <br /> == 2012 ==<br /> === Noviembre 26 ===<br /> Toño Sánchez nos presentó &#039;&#039;Uso de las funciones y decoradores de Python&#039;&#039; mediante varios ejemplos que preparó y explicó paso a paso.<br /> <br /> === Octubre 29 ===<br /> Se mostró cómo usar el módulo [http://pypi.python.org/pypi/coverage coverage] para correr las pruebas y después reportar el porcentaje de cobertura. Graph.py tenía 73% y vimos cómo agregando tres pruebas unitarias y pidiendo a coverage que ejercite la función main de Graph.py, se alcanzó el 100%.<br /> <br /> Vimos cómo usar [http://pypi.python.org/pypi/virtualenv virtualenv] (paquete &#039;&#039;python-virtualenv&#039;&#039; en Debian y Ubuntu) para crear instalaciones de Python locales, que no afectan a la instalación del sistema, y algunos casos de instalar paquetes usando easy_install y pip. Mostramos el ejemplo de hacer un [https://github.com/LinuxCabal/Grafo-TDD/pull/1 Pull request] en github.com y aceptarlo en el repositorio Grafo-TDD de LinuxCabal para incorporar cambios.<br /> <br /> Usamos por primera vez una red local inalámbrica que nos permite compartir la pantalla de cualquier participante a los demás, y también nos da acceso a internet. Fuimos 12 participantes.<br /> <br /> === Septiembre 24 ===<br /> Miguel compartió cómo implementar una función sencilla, empezando por crear un módulo de pruebas y la primera prueba unitaria desde cero. Se mostraron cómo usar el módulo &#039;&#039;unittest&#039;&#039;, su clase &#039;&#039;TestCase&#039;&#039; y sus métodos &#039;&#039;assertEqual&#039;&#039; y &#039;&#039;assertTrue&#039;&#039;. Empezamos con el archivo de pruebas &#039;&#039;TestToolkit.py&#039;&#039; que contiene:<br /> &lt;source lang=&quot;Python&quot;&gt;<br /> import unittest<br /> <br /> class TestCase( unittest.TestCase ):<br /> def test_suma( self ):<br /> from toolkit import suma<br /> result = suma( 2, 5 )<br /> self.assertEquals( result, 7 )<br /> <br /> if __name__ == &#039;__main__&#039;:<br /> unittest.main()<br /> &lt;/source&gt;<br /> <br /> Inicialmente la prueba da un error: toolkit y suma no existen. Después creamos el módulo &#039;&#039;toolkit.py&#039;&#039;, primero con una función suma que no hace nada. La prueba ya no da error, ahora falla. Enventualmente implementamos suma de forma que la prueba unitaria pasó:<br /> &lt;source lang=&quot;Python&quot;&gt;<br /> def suma( a, b ):<br /> &quot;&quot;&quot; Regresa la suma de a + b &quot;&quot;&quot;<br /> return a + b<br /> &lt;/source&gt;<br /> Las pruebas se corren así:<br /> python3 TestToolkit.py<br /> También así:<br /> python3 -m unittest TestToolkit<br /> y podemos especificar el caso y/o la prueba:<br /> python3 -m unittest TestToolkit.TestCase.test_suma<br /> <br /> Al final de la reunión acordamos que para el siguiente mes escogeremos un proyecto y empezaremos su implementación usando la metodología Test Driven Development o TDD.<br /> <br /> === Agosto 27 ===<br /> [https://github.com/arksega Sergio Gutiérrez] mostró un [https://github.com/arksega/Blender-scripts/blob/master/circular-graph.py ejemplo de Python] para crear una gráfica de pastel de 3D en Blender. [http://www.blender.org/ Blender] hace modelado y animación en 3D, incluye una consola interactiva de Python 3 y un editor para escribir programas que creen objetos, texturas, animaciones y todo lo que puede hacer Blender. Sergio explicó también conceptos y operaciones básicas de Blender.<br /> <br /> [[image:Ejemplo-sergio-thumb.png|center]]<br /> [http://wiki.cabal.mx/images/Ejemplo-sergio.png Ver imagen en tamaño original]<br /> <br /> === Julio 30 ===<br /> Empezamos comentando sobre [https://github.com/gregmalcolm/python_koans/wiki Python Koans], el ejercicio que propusimos hacer en la reunión anterior. Sergio nos mostró que incluye un caso que usa la metodología TDD, Test Driven Development: se te dan ya elaboradas nueve pruebas unitarias que especifican una función, y uno tiene que escribir los comandos de la función para que satisfaga esas pruebas.<br /> <br /> Por alguna razón surgió el tema de cómo haces cuando aparece un error difícil de encontrar en un programa o sistema basado en Python? Entonces mostramos una de las formas de usar [http://docs.python.org/py3k/library/pdb.html pdb], el depurador de Python que está incluído en la librería estándar, para correr tu programa y ver variables, ir paso a paso, ver subir o bajar en el stack, poner breakpoints, etc.<br /> <br /> Siguiendo el tema, despues vimos el video [http://www.youtube.com/watch?v=vfPtGsSJldg Introduction to PDB] que presentó Chris McDonough en la PyCon este año, Dura 1/2 hora y está muy ilustrativo. Como dice Chris al inicio de su presentación: es mejor conocer pdb y no usarlo, que necesitarlo y ni saber que existe ;)<br /> <br /> Esta vez tuvimos cinco participantes. Georgina y Sandino nos compartieron unas botanas que llevaron, así que esta vez no pedimos pizzas.<br /> <br /> === Junio 25 ===<br /> Acordamos hacer el Python Koans y comentar en la lista si hay dudas.<br /> <br /> === Mayo 28 ===<br /> Mostramos un ejemplo de pygame con un ícono de una bola que se mueve, rebotando en los límites de la ventana. Presentamos el módulo turtle de la librería estándar, cómo correr las demo y las demos en el módulo turtledemo.<br /> <br /> === Abril 23 ===<br /> Vimos el video [http://www.youtube.com/watch?v=Xk6gQ6s2QjU Through The Ether And Back Again: What Happens To A Packet When You Send It] por Glyph Lefkowitz, fundador del proyecto [http://twistedmatrix.com/trac/ Twisted], un framework para escribir programas de red asíncronos en Python. 22 minutos más preguntas.<br /> <br /> = Cómo participar en este grupo =<br /> * En la sección &#039;&#039;&#039;Cosas por hacer&#039;&#039;&#039; más abajo hay algunas tareas en las que podrías ayudar. Algunas no requieren programar, sino simplemente buscar información, y le van a servir a todo el grupo. Avisa en la lista si vas a realizar una tarea o si ya la terminaste.<br /> * Instala el &#039;&#039;&#039;software requerido&#039;&#039;&#039; en tu PC (Siguiente sección). En la lista de correos te podemos ayudar si tienes algún problema instalando o utilizando esos programas.<br /> * En la sección &#039;&#039;&#039;Inmersión en Python&#039;&#039;&#039; hay tres tutoriales que te pueden introducir a Python y a Git si aún no los conoces.<br /> * En la sección &#039;&#039;&#039;Proyectos&#039;&#039;&#039; puedes conocer el primer proyecto que hicimos. Si ya conoces un poco de Python y de Git, descarga el código de uno de los proyectos para que lo conozcas, y porqué no, podrías hacer alguna mejora para que sea agregada al código.<br /> <br /> = Software requerido =<br /> #Instala [[Python 3#Instalar|Python 3]]<br /> #Instala [[Instalación de Git|Git]]<br /> #Crea una cuenta en [[GitHub]]<br /> #Instala [[PyYAML]]<br /> <br /> = Inmersión en Python =<br /> * Esta serie de tres tutoriales en Español introduce control de versiones y lo básico de Python y gráficas con tkinter.<br /> # [http://www.linuxcabal.org/PythonCabal/tutorial-python3-git.html Tutorial de Python 3 y Git parte 1]<br /> # [http://www.linuxcabal.org/PythonCabal/tutorial-python3-git-II.html Tutorial de Python 3 y Git parte 2]<br /> # [http://www.linuxcabal.org/PythonCabal/graficas-python3-tkinter.html Gráficas con Python 3 y tkinter]<br /> <br /> * [http://www.khanacademy.org/science/computer-science Introduction to programming and computer science], videos en Inglés muestran conceptos básicos usando Python 3<br /> * [https://www.youtube.com/watch?v=Gp60Qp3GUBU A hands-on introduction to Python for beginning programmers], por Jessica McKellar, PyCon 2013 en Santa Clara, California, 3:54 horas.<br /> <br /> = Cosas por hacer =<br /> <br /> ¿Te interesa ayudar en alguna de estas tareas? ¡Adelante!<br /> <br /> Escoge una o más actividades y avisa en la lista para que te apoyemos si necesitas más información, y para que los demás sepan que ya hay alguien anotado:<br /> <br /> # Escribir en la página PyYAML las instrucciones para instalar el módulo PyYAML para Python 3 a partir del código fuente, cuando no está disponible en la distribución de Linux - tomar de un mensaje previo en el foro.<br /> # Escribir en la página Cómo participar en este grupo, los paquetes que debe instalar un nuevo participante para hacer aportaciones. Incluir hiperenlaces a las páginas Instalación, Uso, Git, GitHub, PyYAML y Cosas por hacer, así como enlaces a los tres tutoriales de introducción a Python 3, Git y tkinter.<br /> # Escribir en la página GitHub cómo crear un repositorio público para compartir tu repositorio local, y cómo agregar los repositorios públicos de otros miembros del grupo - tomar de un mensaje previo del foro.<br /> # Agregar en la página Recursos los enlaces a tutoriales, libros, lineamientos de estilo y otros recursos que se han mencionado en el foro.<br /> # Agregar una sección Tips a la página Git, para incluir comandos frecuentes y/o trucos - tomar de algunos mensajes previos del foro en el tema Git. Incluir recomendaciones para los commit: sobre los mensajes y hacer commit de una cosa a la vez, etc. encontrar notas en internet.<br /> # Escribir una guía sobre cómo hacer un tutorial para PythonCabal usando docutils.<br /> # Escribir un tutorial sobre el uso de diccionarios en Python 3.<br /> <br /> = Proyectos =<br /> [[BiblioCabal]] es el primero con el que empezamos.<br /> <br /> = Propuestas de proyectos =<br /> == Clasificador ==<br /> <br /> Agrupar elementos en categorías usando patrones de texto. Aplicar en BiblioCabal para generar automáticamente un índice por materias de los libros. Uso de expresiones regulares.<br /> <br /> *Estado: propuesta<br /> <br /> == Módulo de plantillas ==<br /> <br /> Extender el esquema de las plantillas que se empezó en BiblioCabal, para un uso general en otras aplicaciones. Comparar con los sistemas existentes y analizar los beneficios.<br /> <br /> *Estado: propuesta<br /> <br /> == Síntesis y análisis de música ==<br /> <br /> Explorar el uso del secuenciador de ALSA en GNU/Linux mediante un módulo de extensión para Python 3, para grabar ejecuciones en tiempo real y reproducirlas. Generar secuencias de notas y percusiones programáticamente.<br /> <br /> Explorar el análisis del ritmo, la armonía y la melodía en secuencias de notas.<br /> <br /> Crear un repositorio de secuencias rítmicas y arreglos de acompañamiento.<br /> <br /> Crear tutoriales para introducir al tema.<br /> <br /> Posible establecimiento de un taller o laboratorio para explorar estas áreas.<br /> <br /> *Estado: propuesta<br /> <br /> = Historia =<br /> Este grupo comenzó con reuniones semanales en las instalaciones de [[LinuxCabal]], A.C, La primera reunión fue el 14 de Junio de 2010. Las reuniones semanales se suspendieron en Noviembre de 2010. Se propusieron reuniones mensuales empezando en Agosto de 2011.<br /> <br /> = Ver también =<br /> * [[Compilar Python]]<br /> * [[Recursos de Python]]<br /> * [[Cómo usar Python en la web]]<br /> * [[Python en la música]]<br /> <br /> [[Category: PythonCabal]]<br /> [[Category: Python]]<br /> [[Category: Proyectos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=C%C3%B3mo_armar_una_PC_silenciosa&diff=120869 Cómo armar una PC silenciosa 2016-01-10T14:06:42Z <p>Patricio Páez: URL /* Selección */</p> <hr /> <div>Pasos para armar una PC sin ventiladores, con materiales que se consiguen localmente, y que funciona con el sistema operativo GNU/Linux. La PC puede usarse entre otras cosas como un centro de entretenimiento para reproducir música o videos.<br /> <br /> = Materiales =<br /> Las referencias son a Digitalife en Guadalajara, Jalisco y los precios se consultaron el 8 de Octubre de 2011.<br /> * Tarjeta madre [http://www.digitalife.com.mx/producto/11938/INTEL/MOTHERBOARD-D425KT-_plus_-MICRO Intel D425KT] $951.20<br /> * Gabinete [http://www.digitalife.com.mx/producto/9910/ACTECK/GABINETE-KENSO-TM410-GATM_:_002-NEGRO Acteck Kenso TM410] $754.00<br /> * Memoria<br /> **[http://www.digitalife.com.mx/producto/12074/SAMSUNG/MEMORIA-SODIMM-DDR3-1GB-1333MHZ-M471B2873FHS Samsung M471B2873FHS],SODIMM DDR3 1GB 1333MHz $133.40<br /> **[http://www.digitalife.com.mx/producto/14647/KINGSTON/MEMORIA-SODIMM-DDR3-2GB-1066MHZ-KVR1066D3S8S7_slash_2G Kingston KVR1066D3S8S7/2G] (no hay existencias)<br /> **[http://www.digitalife.com.mx/producto/14633/KINGSTON/MEMORIA-SODIMM-DDR3-2GB-1333MHZ-KVR1333D3S8S9_slash_2G Kingston KVR1333D3S8S9/2G]<br /> * Adaptador inalámbrico a USB Encore [http://www.digitalife.com.mx/producto/8870/ENCORE/TARJETA-DE-RED-WIRELESS_:_N-USB-ENUWI_:_N3 EncoreENUWI-N3] $179.80<br /> <br /> * Combo teclado y mouse inalambrico<br /> <br /> = Selección =<br /> La tarjeta madre se escogió por el tamaño reducido mini-ITX, por el chipset det consumo bajo que permite la operación sin un ventilador, y porque [http://kmuto.jp/debian/hcl/Intel/D425KT existen drivers] para los dispositivos. Requiere un conector de 24 contactos para alimentación y fuente de poder que cumpla el estándar TFX12V o SFX12V.<br /> <br /> == Memoria ==<br /> La tarjeta de memoria debe ser [http://en.wikipedia.org/wiki/SODIMM SODIMM] de 204 contactos. La organización de los módulos de memoria en la tarjeta de memoria debe ser compatible con lo que espera la tarjeta madre. Para saber esto, es necesario consultar la especificación de la [http://www.intel.com/support/motherboards/desktop/d425kt/sb/CS-031614.htm tarjeta madre] y la de la tarjeta de memoria. Por favor consulta [[Cómo escoger un módulo de memoria]] para conocer los conceptos básicos que son necesarios.<br /> <br /> El documento &#039;&#039;Intel® Desktop Board D425KT and Intel® Desktop Board D425KTW Technical Product Specification&#039;&#039; en PDF, de 89 páginas. La sección &#039;&#039;1.4 System Memory&#039;&#039;, en la página 16, lista los siguientes requerimientos:<br /> *DDR3 800 MHz, DDR3 1066 MHz, DDR3 1333 MHz (La memoria DDR3 1066 MHz y DDR3 1333 MHz funcionará a 800 MHz)<br /> *Máximo 4GB total en el sistema<br /> *Memoria sin ECC<br /> *SO-DIMMs de un lado o doble lado, sin buffer<br /> *Los módulos deben tener &#039;&#039;Serial Presence Detect&#039;&#039; para que funcionen a su frecuencia. Serial Presence Detect es una tabla de datos en el módulo SO-DIMM cuya función está explicada en la nota de la misma página 16. <br /> <br /> La tabla &#039;&#039;Supported Memory Configurations&#039;&#039; muestra las configuraciones que son soportadas por la tarjeta madre.<br /> <br /> {| class=&quot;wikitable&quot;<br /> |-<br /> ! DIMM Capacity<br /> ! Configuration<br /> ! SDRAM Density<br /> ! SDRAM Organization Front-side/Back-side<br /> ! Number of SDRAM Devices<br /> |-<br /> | 1024 MB<br /> | DS<br /> | 1Gbit<br /> | 64 M x16/64 M x16<br /> | 8<br /> |-<br /> | 1024 MB<br /> | SS<br /> | 1Gbit<br /> | 128 M x8/empty<br /> | 8<br /> |-<br /> | 2048 MB<br /> | DS<br /> | 2Gbit<br /> | 128 M x16/128 M x16<br /> | 8<br /> |-<br /> | 2048 MB<br /> | SS<br /> | 2Gbit<br /> | 256 M x8/empty<br /> | 8<br /> |}<br /> <br /> === 1GB Samsung ===<br /> <br /> El documento [http://www.samsung.com/global/business/semiconductor/file/2011/product/2010/7/5/238426ds_ddr3_1gb_f-die_based_1_5v_sodimm_rev13.pdf 204pin Unbuffered SODIMM based on 1Gb F-die] PDF, de 33 páginas. Es la revisión 1.3 de Julio de 2010 y cubre los módulos M471B2873FHS (1GB) y M471B5673FH0 (2GB). Menciona las siguientes características para el módulo de 1GB (el módulo de 2GB no se encontró disponible localmente):<br /> *Densidad: 1GB<br /> *Organización: 128Mx64 bits<br /> *Composición de componentes: 128Mx8(K4B1G0846F-HC##)*8 <br /> *Número de ranks: 1<br /> <br /> La organización de 64 bits quiere decir que se accesan los 8 bits de 8 dispositivos simultáneamente. Este módulo cumple los requerimientos en el segundo renglón de la tabla de arriba.<br /> <br /> === 2GB Kingston ===<br /> [http://www.kingston.com/dataSheets/KVR1333D3S8S9_2G.pdf KVR1333D3S8S9/2G] (PDF de 2 páginas), 2GB 1Rx8 256M x 64-Bit PC3-1333 CL9 204-Pin SODIMM. Menciona las siguientes características;<br /> *Basado en ocho componentes DDR3-1333 FBGA de 256M x 8-bit<br /> *SPD programado a latencia 9-9-9<br /> *1 rank<br /> *8 bancos internos independientes<br /> *Doble lado<br /> <br /> Este módulo cumple los requerimientos en el último renglón de la tabla de arriba.<br /> <br /> === 2GB Kingston ===<br /> <br /> Kingston [http://www.kingston.com/dataSheets/KVR1066D3S8S7_2G.pdf KVR1066D3S8S7/2G] (PDF de 2 páginas), 2GB 1Rx8 256M x 64-Bit PC3-1066<br /> CL7 204-Pin SODIMM<br /> *Basado en ocho componentes DDR3-1066 FBGA de 256M x 8-bit<br /> *SPD programado a latencia 7-7-7<br /> *1 rank<br /> *8 bancos internos independientes<br /> *Doble lado<br /> <br /> Este módulo cumple los requerimientos en el último renglón de la tabla de arriba, pero no esta disponible en las tiendas.<br /> <br /> Usar la [http://www.kingston.com/us/memory/valueram/valueram_decoder referencia de valores] para memorias ValueRAM de Kingston, para determinar el número de ranks.<br /> <br /> == Gabinete ==<br /> Tiene un rejilla de ventilación justo arriba de el procesador y de los módulos de memoria. La fuente de poder es de 60W externa, adecuada para operación sin ventilador, y tiene 24 contactos + 4 contactos de 12V. El tamaño 7 x 20 x 31.5 cm es pequeño y es para la tarjeta madre de formato mini-ITX.<br /> <br /> <br /> <br /> También puedes ver [[Pasos de armado de la pc silenciosa|las imágenes amplificadas]] (puede tardar en cargar)<br /> <br /> = Desempacar =<br /> #De la caja del gabinete vamos a extraer:<br /> #*El gabinete<br /> #*La fuente de poder<br /> #De la caja de la tarjeta madre extraemos:<br /> #*La tarjeta madre, en una bolsa conductiva que proteje de las descargas electrostáticas<br /> #*La cubierta de los conectores (Ver foto)<br /> #*Una bolsa con tornillos, de la cual vamos a separar cuatro tornillos y cuatro separadores para cada esquina de la tarjeta madre (Ver foto)<br /> #*Una guía de la ubicación de los conectores en la tarjeta madre y su función<br /> <br /> [[image:Armado-pc-cubierta-para-conectores-de-la-tarjeta-madre-sm.jpg|center]]<br /> <br /> <br /> [[image:Armado-pc-tornillos-y-espaciadores-tarjeta-madre-sm.jpg|center]]<br /> <br /> = Preparar el gabinete =<br /> Con el gabinete frente a nosotros, vamos a hacer lo siguiente para dejarlo listo:<br /> #Remover dos tornillos que sujetan la tapa del gabinete<br /> #Remover tres tornillos que sujetan la charola para el disco duro<br /> #Cortar la liga que sujeta los cables<br /> #Opcional: Remover los cuatro tornillos que sujetan el ventilador, y después remover éste.<br /> <br /> [[image:Armado-pc-quitar-tornillos-tapa-sm.jpg|center]]<br /> <br /> <br /> [[image:Armado-pc-quitar-la-tapa-sm.jpg|center]]<br /> <br /> <br /> [[image:Armado-pc-gabinete-con-charola-disco-duro-sm.jpg|center]]<br /> <br /> <br /> [[image:Armado-pc-tornillo-charola-disco-duro-sm.jpg|center|Detalle de un sujetador y el tornillo de sujeción de la tarjeta madre]]<br /> <br /> <br /> [[image:Armado-pc-gabinete-sin-la-tapa-sm.jpg|center]]<br /> <br /> <br /> [[image:Armado-pc-cables-1-sm.jpg|center|Todos los cables del gabinete para conectar a la tarjeta madre]]<br /> <br /> <br /> [[image:Armado-pc-cables-2-sm.jpg|center|Cables de poder de la fuente del gabinete para la tarjeta madre y unidad de disco duro]]<br /> <br /> <br /> [[image:Armado-pc-tornillos-ventilador-sm.jpg|center|Ubicación de los cuatro tornillos que sujetan el ventilador, se pueden remover si no se usará]]<br /> <br /> = Cubierta para los conectores =<br /> #Colocar la cubierta para los conectores de la tarjeta madre<br /> <br /> [[image:Armado-pc-cubierta-conectores-sm.jpg|center|La cubierta para los conectores de la tarjeta madre ya instalada]]<br /> <br /> = Prueba previa de encendido =<br /> Este paso es opcional.<br /> <br /> [[image:Armado-pc-prueba-inicial-sm.jpg|center]]<br /> <br /> = Instalar la tarjeta madre =<br /> #Atornillar los cuatro espaciadores<br /> #Colocar la placa para los conectores<br /> #Colocar la tarjeta madre<br /> #Colocar los cuatro tornillos que sujetan la tarjeta madre, sin apretarlos primero.<br /> <br /> [[image:Armado-pc-insertar-tarjeta-madre-1-sm.jpg|center|Insertando la tarjeta madre en el gabinete, primer paso: se introduce in poco inclinada]]<br /> <br /> <br /> [[image:Armado-pc-insertar-tarjeta-madre-2-sm.jpg|center|Segundo paso de insertar la tarjeta madre en el gabinete, se alinea con éste]]<br /> <br /> <br /> [[image:Armado-pc-alinear-conectores-1-sm.jpg|center|Alineando los conectores de la tarjeta madre, vista desde atrás del gabinete]]<br /> <br /> <br /> [[image:Armado-pc-alinear-conectores-2-sm.jpg|center|Alineando los conectores de la tarjeta madre, vista desde adentro del gabinete]]<br /> <br /> <br /> [[image:Armado-pc-separador-tarjeta-madre-sm.jpg|center|Detalle de un separador y el tornillo para fijar la tarjeta madre]]<br /> <br /> <br /> [[image:Armado-pc-tarjeta-madre-instalada-sm.jpg|center|La tarjeta madre ya sujetada con los cuatro tornillos, todavía sin los cables conectados]]<br /> <br /> = Instalar memoria =<br /> #Colocar los módulos SODIMM en la ranura inferior<br /> <br /> [[image:Armado-pc-conectar-memoria-1-sm.jpg|center|Una módulo SODIMM de memoria instalado en la ranura inferior]]<br /> <br /> = Conexiones =<br /> #Colocar los conectores de poder<br /> #Colocar los conectores de USB y de sonido<br /> <br /> [[image:Armado-pc-acomodo-cables-sm.jpg|center|Acomodo de los cables]]<br /> <br /> = Prueba inicial =<br /> Es recomendable probar la tarjeta madre, el o los módulos de memoria y el dispositivo de almacenamiento masivo lo más pronto posible, una vez que los hemos comprado, para verificar que están en buen estado. Así, si fuera necesario, podemos regresar a la tienda dentro del período en el cual hacen válido el cambio de estos elementos por uno nuevo.<br /> <br /> [[image:memtest-ejecutando- las-pruebas-sm.JPG|center]]<br /> <br /> Podemos usar un llavero USB con un disco vivo de una distribución de GNU/Linux, que suelen incluir el programa &#039;&#039;memtest&#039;&#039; para hacer pruebas de la memoria.<br /> <br /> = Actualizar el BIOS =<br /> Es opcional, los pasos son:<br /> #Descargar el archivo de BIOS de la página de soporte del fabricante de la tarjeta madre. En la [http://www.intel.com/content/www/us/en/support/boards-and-kits/desktop-boards/intel-desktop-boards-with-intel-atom-processors/intel-desktop-board-d425kt.html página de soporte para la tarjeta madre D425KT], clic en &#039;&#039;BIOS Update&#039;&#039; para ir a [https://downloadcenter.intel.com/download/23053/BIOS-Update-MWPNT10N-86A- BIOS Update]. Ahí buscar la liga a [https://downloadmirror.intel.com/23053/eng/MW_0132_ReleaseNotes.pdf Release Notes].<br /> #Grabar en un llavero USB que tenga sistema de archivos FAT.<br /> #Arrancar la tarjeta madre y presionar &#039;&#039;&#039;F7&#039;&#039;&#039; para que entre a la ventana de actualizar BIOS.<br /> #Navegar hasta seleccionar el archivo del BIOS y se acepta.<br /> <br /> A la fecha se han probado dos tarjetas. La primera venía con &#039;&#039;MWPNT10N.86A.0069.2010.0913.1432&#039;&#039;, una versión un poco antigua. Se actualizó a &#039;&#039;MWPNT10N.86A.0083.2011.0524.1600&#039;&#039; porque la lista de cambios en versiones de BIOS mencionaba que una versión más reciente corregía problemas de arranque de Linux. El problema se corrigió con la actualización. Serial BTKT047000UM, versión AAE93083-301.<br /> <br /> La segunda tarjeta venía con &#039;&#039;MWPNT10N.86A.0089.2011.0907.1600&#039;&#039;, que es una versión aún más reciente y no fue necesario actualizar.<br /> <br /> = Instalación del sistema operativo =<br /> Existen muchas opciones de distribuciones para diversas necesidades. En este wiki tenemos las siguientes opciones:<br /> *[[Instalación de Debian]] Esta opción ha sido probada en la unidad que se describe en este artículo, escogiendo arranque de red inalámbrica con descarga de internet, Debian testing para arquitectura Intel de 32 bits, y el entorno de escritorio Xfce.<br /> <br /> = Ejemplos de uso =<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Configuraci%C3%B3n_de_Xfce&diff=106358 Configuración de Xfce 2015-10-09T00:52:40Z <p>Patricio Páez: Typo /* Terminal */</p> <hr /> <div>Tips y trucos para adecuar el entorno a necesidades específicas.<br /> <br /> = Terminal =<br /> Si se desean desactivar las teclas de atajo predeterminadas de Xfce, por ejemplo para que sean usadas en alguna aplicación, se editan o crean uno o ambos archivos de configuración:<br /> * &#039;&#039;~/.config/xfce/terminal/accels.scm&#039;&#039;, desactivar F1 y F11:<br /> (gtk_accel_path &quot;&lt;Actions&gt;/terminal-window/contents&quot; &quot;&quot;)<br /> (gtk_accel_path &quot;&lt;Actions&gt;/terminal-window/fullscreen&quot; &quot;&quot;)<br /> * &#039;&#039;~/.config/xfce/terminal/terminalrc&#039;&#039;, desactivar F10:<br /> ShortcutsNoMenukey=TRUE<br /> *[http://superuser.com/questions/562069/disable-f1-on-xfce-terminal Disable F1 on xfce terminal]<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Configurar_una_PC_como_access_point_con_hostapd&diff=6896 Configurar una PC como access point con hostapd 2014-12-15T13:07:39Z <p>Patricio Páez: Referencia a iptables /* Compartir internet */</p> <hr /> <div>Cómo convertir en un access point tu laptop, PC, cubietruck, Raspberry Pi, etc.<br /> <br /> = Requisitos =<br /> # Wireless interface card (WIC)<br /> #* Modo AP (Master, Infrastructure)<br /> #* Driver nativo en Linux, no NDISwrapper.<br /> #* Utilice el driver mac80211<br /> # hostapd 0.6.8+<br /> # Servidor DHCP (&#039;&#039;isc-dhcp-server&#039;&#039;, &#039;&#039;udhcpd&#039;&#039;, &#039;&#039;dnsmasq&#039;&#039;)<br /> <br /> Opcionales para probar:<br /> # iw (paquete &#039;&#039;wireless-tools&#039;&#039;)<br /> # wpa_supplicant<br /> <br /> Soporta el modo AP una WIC? Usa el siguiente comando:<br /> iw list<br /> Checa que la salida incluya el rengón señalado:<br /> Supported interface modes:<br /> * IBSS<br /> * managed<br /> * AP &lt;---<br /> * AP/VLAN<br /> * WDS<br /> * monitor<br /> * mesh point<br /> <br /> Utiliza el driver mac80211? Usa este comando:<br /> lsmod | grep 80211<br /> <br /> mac80211 415761 1 b43<br /> cfg80211 356930 2 b43,mac80211<br /> rfkill 18387 5 cfg80211,hp_wmi,bluetooth<br /> <br /> = Instalar software =<br /> Debian/Ubuntu:<br /> apt-get install hostapd isc-dhcp-server wireless-tools<br /> Fedora:<br /> yum install hostapd wireless-tools<br /> <br /> = Configurar la WIC =<br /> Si NetworkManager está en uso:<br /> killall NetworkManager<br /> <br /> Asignar una dirección fija:<br /> ifconfig wlan0 192.169.42.1 netmask 255.255.255.0<br /> <br /> = Configurar hostapd =<br /> * /etc/default/hostapd<br /> DAEMON_CONF=&quot;/etc/hostapd/hostapd.conf&quot;<br /> * /etc/hostapd/hostapd.conf<br /> interface=wlan0<br /> driver=nl80211<br /> ssid=mi_red<br /> auth_algs=1<br /> wpa=2<br /> wpa_passphrase=secreto1<br /> wpa_key_mgmt=WPA-PSK <br /> wpa_pairwise=CCMP TKIP<br /> rsn_pairwise=CCMP<br /> <br /> = Configurar isc-dhcp-server =<br /> * /etc/dhcp/dhcpd.conf<br /> option domain-name-servers 8.8.8.8;<br /> subnet 192.168.42.0 netmask 255.255.255.224 {<br /> range 192.168.42.02 192.168.42.20;<br /> option routers 192.168.42.1;<br /> }<br /> <br /> = Compartir internet =<br /> echo 1 &gt; /proc/sys/net/ipv4/ip_forward <br /> iptables -F<br /> iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE<br /> iptables -A FORWARD -o eth+ -j ACCEPT<br /> <br /> Para no permitir acceso a la LAN, incluyendo el access point, agregar estos comandos:<br /> iptables -A INPUT -i wlan0 -d 192.168.42.1 -j LOG --log-prefix=&quot;firewall ap: &quot;<br /> iptables -A INPUT -i wlan0 -d 192.168.42.1 -j DROP<br /> <br /> iptables -A FORWARD -i wlan0 -d 192.168.1.0/24 -j LOG --log-prefix=&quot;firewall lan: &quot;<br /> iptables -A FORWARD -i wlan0 -d 192.168.1.0/24 -j DROP<br /> <br /> Referencia: [https://www.frozentux.net/iptables-tutorial/images/tables_traverse.jpg Tablas y cadenas en iptables] en [https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#TRAVERSINGOFTABLES Chapter 6. Traversing of tables and chains] en [https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html Iptables Tutorial 1.2.2] por Oskar Andreasson<br /> <br /> = Probar =<br /> == Servidor ==<br /> Ejecutar hostapd en la consola:<br /> hostapd -d /etc/hostapd.conf<br /> <br /> wlan0: interface state UNINITIALIZED-&gt;ENABLED<br /> wlan0: AP-ENABLED <br /> <br /> == Cliente ==<br /> Generar hash de contraseña:<br /> $ wpa_passphrase mi_red secreto1 &gt; wpa_supplicant.conf<br /> * wpa_supplicant.conf<br /> network={<br /> ssid=&quot;mi_red&quot;<br /> #psk=&quot;secreto1&quot;<br /> psk=2667f3d0e64a2d6888983f41327a9a05161724e24857776473427bde319cf8ed<br /> }<br /> <br /> Conectar:<br /> wpa_supplicant -i wlan0 -D wext -c wpa_supplicant.conf -d<br /> <br /> = Arrancar en cada inicio =<br /> Debian/Ubuntu:<br /> sudo update-rc.d hostapd enable<br /> sudo update-rc.d isc-dhcp-server enable <br /> <br /> * /etc/sysctl.conf<br /> net.ipv4.ip_forward=1<br /> <br /> * /etc/iptables.ipv4.nat<br /> iptables-save &gt; /etc/iptables.ipv4.nat<br /> <br /> * /etc/network/interfaces<br /> iface wlan0 inet static<br /> address 192.168.42.1<br /> netmask 255.255.255.0<br /> <br /> allow-hotplug eth0<br /> iface eth0 inet dhcp<br /> <br /> up iptables-restore &lt; /etc/iptables.ipv4.nat<br /> <br /> = Tips =<br /> <br /> * 80211b es el modo por omisión, 11Mb/s.<br /> * Para usar el modo 802.11g, 54Mb/s, incluir en hostapd.conf:<br /> hw_mode=g<br /> * Para usar el modo 802.11n, 72Mb/s, agregar en hostapd.conf:<br /> wme_enabled=1<br /> ieee80211n=1<br /> ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40]<br /> <br /> <br /> = Recursos =<br /> * http://w1.fi/hostapd/<br /> * [http://wireless.kernel.org The official Linux Wireless wiki]<br /> ** [http://wireless.kernel.org/en/users/Drivers Existing Linux Wireless drivers]<br /> <br /> * [https://github.com/pritambaral/hostapd-rtl871xdrv Hostapd driver for RTL8188{C|CU|CUS} wifi chips], por Chhatoi Pritam Baral.<br /> <br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Introducci%C3%B3n_a_Kivy&diff=6877 Introducción a Kivy 2014-12-14T01:08:24Z <p>Patricio Páez: BoxLayouts /* Tutoriales */</p> <hr /> <div>Instrucciones para instalar el framework en un ambiente virtual en varias distribuciones, referencias a tutoriales.<br /> <br /> == Instalación ==<br /> <br /> === Fedora ===<br /> <br /> Los pasos generales para instalar:<br /> # Instalar cython<br /> # [[Instalación de pygame#Python_3|Instalar pygame]] (requiere un parche)<br /> # Instalar kivy<br /> # Comprobar la instalación<br /> <br /> pip install cython<br /> <br /> pip install git+https://github.com/kivy/kivy.git<br /> <br /> El script &#039;&#039;install-kivy&#039;&#039; realiza los pasos anteriores, se probó en Fedora 20 y Debian testing. Tal vez necesita adaptarse para otras distribuciones. El script y el parche requerido estan aquí: https://github.com/LinuxCabal/LCUtils/tree/master/generales<br /> <br /> === Debian ===<br /> Debian testing tiene los paquetes &#039;&#039;python-kivy&#039;&#039; y &#039;&#039;python3-kivy&#039;&#039; con la versión 1.8.0.<br /> <br /> == Tutoriales ==<br /> *[http://archlinux.me/dusty/2013/08/26/creating-an-application-in-kivy-part-9/ Creating an application in Kivy], por Dusty Phillips. Publicado en 9 partes entre junio y agosto de 2013.<br /> *[http://www.blog.pythonlibrary.org/2013/11/25/kivy-101-how-to-use-boxlayouts/ Kivy 101: How to Use BoxLayouts], por Mike Driscoll, 25 de noviembre de 2013<br /> <br /> == Ver también ==<br /> *[[Instalación de pygame]]<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Introducci%C3%B3n_a_Arduino&diff=5187 Introducción a Arduino 2014-02-01T13:30:14Z <p>Patricio Páez: Optocouplers /* Enlaces externos */</p> <hr /> <div>Espacio para iniciarte en la experimentación con el Arduino.<br /> <br /> == Software para programar ==<br /> Los programas se editan y se compilan en una PC o laptop. El arduino se conecta mediante el cable USB y se le descargan los programas para que sean ejecutados.<br /> <br /> Puedes escoger entre un ambiente integrado en modo gráfico basado en Java, o usar la línea de comando.<br /> <br /> === Ambiente integrado de desarrollo ===<br /> En Ubuntu y Debian instala el paquete &#039;&#039;&#039;arduino&#039;&#039;&#039;.<br /> <br /> === Uso desde la línea de comando ===<br /> Los pasos siguientes son para Ubuntu y Debian.<br /> # Instala los paquetes &#039;&#039;&#039;arduino-core&#039;&#039;&#039; y &#039;&#039;&#039;arduino-mk&#039;&#039;&#039;. <br /> # Crea una carpeta general para arduino, y dentro de ésta puedes crear subcarpetas para cada programa o proyecto.<br /> # Cambia a la subcarpeta del programa en el cual vas a trabajar.<br /> # Crea un archivo .ino y escribe código o pega de alguno de los ejemplos o tutoriales.<br /> # Crea un archivo Makefile con el contenido que se muestra más abajo.<br /> # Para compilar el programa ejecuta &#039;&#039;make&#039;&#039;.<br /> # Para enviar el programa al arduino ejecuta &#039;&#039;sudo make upload&#039;&#039;.<br /> <br /> * Makefile<br /> ARDUINO_DIR = /usr/share/arduino<br /> ARDMK_DIR = /usr<br /> AVR_TOOLS_DIR = /usr<br /> <br /> BOARD_TAG = uno<br /> ARDUINO_PORT = /dev/ttyACM0<br /> <br /> include /usr/share/arduino/Arduino.mk<br /> <br /> <br /> tras seguir las instrucciones (en Mint), encontre un pequeño problema:<br /> <br /> /usr/share/arduino/Arduino.mk:514: build-cli/depends.mk: No such file or directory<br /> mkdir build-cli<br /> echo &#039;#include &lt;Arduino.h&gt;&#039; &gt; build-cli/blink.cpp<br /> cat blink.ino &gt;&gt; build-cli/blink.cpp<br /> make: ard-parse-boards: Command not found<br /> make: ard-parse-boards: Command not found<br /> make: ard-parse-boards: Command not found<br /> /usr/bin/avr-g++ -MM -mmcu= -DF_CPU= -DARDUINO=100 -I. -I/...<br /> cc1plus: error: missing argument to &quot;-mmcu=&quot;<br /> make: *** [build-cli/blink.d] Error 1<br /> rm build-cli/blink.cpp<br /> <br /> El problema es que make no puede encontrar el programa<br /> &#039;&#039;&#039;ard-parse-boards&#039;&#039;&#039;,<br /> para arreglarlo, debemos modificar el archivo<br /> <br /> /usr/share/arduino/Arduino.mk <br /> (se necesita ser sudo para editarlo)<br /> linea 218, esta asi:<br /> <br /> PARSE_BOARD = ard-parse-boards --boards_txt=$(BOARDS_TXT)<br /> <br /> cambiarla con:<br /> <br /> PARSE_BOARD = $(ARDUINO_DIR)/ard-parse-boards --boards_txt=$(BOARDS_TXT)<br /> <br /> === Comunicación serial ===<br /> Usa &#039;&#039;screen&#039;&#039; así:<br /> screen /dev/ttyACMO 115200<br /> <br /> == Proveedores ==<br /> *[http://www.5hz-electronica.com/arduino.aspx 5Hz Electrónica] Dieron un descuento para dos pedidos de Arduinos y accesorios en conjunto que hizo Renich en Octubre/Noviembre de 2011 para varios participantes de LinuxCabal. En Monterrey.<br /> *[http://www.electronicaestudio.com Electrónica Estudio], motores, accesorios para robótica. En México D.F. La recomendó Javier.<br /> *[http://www.steren.com.mx/catalogo/prod.asp?p=3687 ULN2803A], Darlington 8 canales, 50V, 500mA, disponible en Steren, Don lo recomendó. En varias ciudades.<br /> *[http://www.coldfire-electronica.com/ Coldfire Electrónica], en Guadalajara. La recomendó Arthur.<br /> *[http://www.hetpro-store.com/ HeTPro], en Guadalajara junto a CUCEI. Arduino Uno y accesorios, cables conectores para protoboard, fabricación de circuitos impresos.<br /> <br /> == Ver también ==<br /> [[Instalación de Fritzing]]<br /> <br /> == Enlaces externos ==<br /> *[http://www.linuxcabal.org/TallerArduinoCabal20111001.pdf Taller introductorio], por Javier Zavala, 1 de Octubre de 2011, 27 páginas en PDF.<br /> *[http://groups.google.com/group/ArduinoCabal ArduinoCabal], lista de correos en google groups.<br /> *[http://www.arduino.cc Página oficial de Arduino]<br /> *[http://makezine.com/arduino/ La sección para Arduino] en Makezine<br /> *[http://shallowsky.com/software/arduino/arduino-cmdline.html Command-line Arduino development]<br /> *[http://www.suffix.be/blog/send-data-to-arduino Send data from a computer to an Arduino]<br /> *[http://www.slideshare.net/amritayan/test-driven-development-in-c Test Driven Development in c], por Olve Maudal, TDD usando un esquema muy sencillo para hacer las pruebas unitarias sin un framework.<br /> *[http://javierzavalaponce.wikispaces.com/Taller+Eagle.+Como+hacer+PCBs Taller Eagle. Como hacer PCBs], por Javier Zavala, 14 de enero de 2012<br /> *[http://ruggedcircuits.com/html/ancp01.html 10 Ways to Destroy an Arduino] en Rugged Circuits<br /> *[http://www1.electusdistribution.com.au/images_uploaded/optocoup.pdf Optocouplers: When &amp; how to use them], PDF, 3 páginas. Electus Distribution.<br /> <br /> [[Category: ArduinoCabal]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=C%C3%B3mo_usar_encriptaci%C3%B3n&diff=4797 Cómo usar encriptación 2013-08-29T13:15:56Z <p>Patricio Páez: Empezar este tópico</p> <hr /> <div>Se recomienda tener las particiones encriptadas en las computadoras portátiles, ya que son robadas con facilidad. Con las particiones encriptadas la información no está accesible.<br /> <br /> = Partición de usuario =<br /> En Debian el instalador ofrece la opción usar LVM y encriptación, y pide teclear la contraseña (passphrase). Cuando el sistema ya instalado arranca, va a pedir la contraseña y abrirá y montará las particiones encriptadas.<br /> <br /> = Llavero o disco externo USB =<br /> <br /> <br /> = Enlaces externos =<br /> * [http://www.debianuserforums.org/viewtopic.php?f=9&amp;t=408/url Encrypting an external hard drive on Debian (Squeeze)]<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=QEMU_y_KVM&diff=4791 QEMU y KVM 2013-08-19T02:53:49Z <p>Patricio Páez: Empezar este tópico</p> <hr /> <div>Para instalar Debian con Xfce4 de 64 bits:<br /> qemu-system-x86_64 -hda virtual-disk.qemu -m 512 -enable-kvm -cdrom debian-testing-amd64-xfce-CD-1.iso -boot d<br /> <br /> Para arrancar Debian una vez instalado:<br /> qemu-system-x86_64 -hda virtual-disk.qemu -m 512 -enable-kvm<br /> <br /> <br /> = Enlaces externos =<br /> * [http://warpedtimes.wordpress.com/2010/01/06/hardware-accelerated-virtualization-with-qemu-and-kvm/ Hardware Accelerated Virtualization with QEMU and KVM]<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Compilar_Python&diff=4759 Compilar Python 2013-08-04T13:16:38Z <p>Patricio Páez: Primero 3 /* Obtener código fuente */</p> <hr /> <div>Instrucciones y trucos para poder compilar e instalar Python 2 y 3 desde el código fuente en diversas distribuciones.<br /> ----<br /> = Requisitos =<br /> Se requieren algunos paquetes, en Ubuntu o Debian:<br /> sudo apt-get install build-essential python-dev zlib1g-dev libreadline-dev \<br /> uuid-dev libssl-dev libsqlite3-dev tk-dev libncurses-dev \<br /> libgdbm-dev libbz2-dev liblzma-dev<br /> En Centos/Fedora:<br /> yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel<br /> <br /> = Pasos =<br /> Primero consigue el archivo comprimido con el código fuente de la versión más reciente (ver secciones más abajo). La versión actual y las anteriores se encuentran en http://python.org/download/releases<br /> <br /> Una vez conseguido el archivo comprimido del código fuente, hay que descomprimirlo y entrar a la carpeta que se crea:<br /> <br /> tar xfz Python-3.3.2.tar.bz2<br /> cd Python-3.3.2<br /> <br /> Se siguen los tres pasos usuales:<br /> ./configure -prefix=$HOME<br /> make<br /> make install<br /> <br /> La opción &#039;&#039; -prefix=$HOME&#039;&#039; se usa para instalar en la carpeta de usuario. Si no se usa, el comando &#039;&#039;make install&#039;&#039; debe ejecutarse como usuario root.<br /> <br /> Antes de instalar también se pueden correr las pruebas así:<br /> <br /> make test<br /> <br /> = Obtener código fuente =<br /> == Python 3.3 ==<br /> <br /> Descargar el archivo &#039;&#039;Python-3.3.2.tar.bz2&#039;&#039; ( 13&#039;xxx,xxx bytes) de la página http://www.python.org/download/releases/3.3.2/. Se Puede usar wget así:<br /> wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2<br /> <br /> == Python 2.5 ==<br /> Descargar el archivo &#039;&#039;Python-2.5.4.tar.bz2&#039;&#039; (9&#039;821,313 bytes) de la página http://www.python.org/download/releases/2.5.4/. Se Puede usar wget así:<br /> wget http://www.python.org/ftp/python/2.5.4/Python-2.5.4.tar.bz2<br /> <br /> No utilizar el código fuente del repositorio mercurial, porque Python 2.5 usaba subversion y los archivos tienen &#039;&#039;$Revision$&#039;&#039; en lugar de &#039;&#039;$Revision nnnn$&#039;&#039;, donde nnnn es la revisión que subversion inserta al hacer un checkout. Se presenta este [http://bugs.python.org/issue11421 problema conocido].<br /> <br /> = Ver también =<br /> * [[Python 3]]<br /> * [[Python 2]]<br /> <br /> = Enlaces externos =<br /> *[http://askubuntu.com/questions/21547/what-are-the-packages-libraries-i-should-install-before-compiling-python-from-so What are the packages/libraries I should install before compiling Python from source?], en askubuntu.com.<br /> *[http://code.google.com/p/bungeni-portal/wiki/InstallingBungeni SSL support for Python 2.5]<br /> *[http://www.unixmen.com/howto-install-python-3-x-in-ubuntu-debian-fedora-centos/ Howto install Python 3.x in Ubuntu, Debian, Fedora &amp; Centos] por pirat9<br /> <br /> <br /> [[Category: PythonCabal]] [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Python_3&diff=4755 Python 3 2013-08-04T13:06:20Z <p>Patricio Páez: Enlace al Howto /* Ver también */</p> <hr /> <div>= Instalación =<br /> <br /> == GNU/Linux ==<br /> Muchas distribuciones traen ya instalado Python 2, y además ofrecen Python 3 en sus repositorios de paquetes de software. Instala el paquete de Python 3, y opcionalmente el editor &#039;&#039;idle&#039;&#039;. Para instalar debes hacerlo como usuario root. En distribuciones derivadas de Debian, como Ubuntu el comando en una terminal es:<br /> <br /> apt-get install python3 idle3<br /> <br /> En distribuciones derivadas de Redhat como Fedora y Mandriva el comando es:<br /> <br /> yum python3 python-tools<br /> <br /> o<br /> <br /> urpmi python3 idle3<br /> <br /> == Windows ==<br /> Descarga el instalador (13 MB) en el enlace &#039;&#039;Windows Installer&#039;&#039; debajo de &#039;&#039;Quick Links (3.1.2)&#039;&#039; en http://python.org. Córrelo aceptando todas las preguntas, tarda menos de un minuto en instalar. Incluye el ambiente gráfico IDLE y el toolkit TK.<br /> <br /> = Uso =<br /> == GNU/Linux ==<br /> Para ejecutar el ambiente interactivo de consola, escribe en una terminal:<br /> <br /> python3<br /> <br /> Salir con:<br /> <br /> Ctl-D<br /> <br /> Para ejecutar el ambiente gráfico, escribe en una terminal:<br /> <br /> idle3<br /> <br /> O busca en el menú de aplicaciones del escritorio. Por ejemplo, en Ubuntu es: &#039;&#039;Aplicaciones -&gt; Programación -&gt; IDLE3&#039;&#039;.<br /> <br /> == Windows ==<br /> *&#039;&#039;Editar archivos&#039;&#039;: Haz clic derecho en un archivo .py y selecciona &#039;&#039;&#039;Editar con IDLE&#039;&#039;&#039;. Para ejecutar ese archivo presiona &#039;&#039;&#039;F5&#039;&#039;&#039;.<br /> <br /> *&#039;&#039;Ambiente interactivo&#039;&#039;: En el escritorio haz clic en &#039;&#039;&#039;Inicio -&gt; Programas -&gt; Python 3&#039;&#039;&#039;, y selecciona &#039;&#039;&#039;Python (Command line)&#039;&#039;&#039; o &#039;&#039;&#039;IDLE (Python GUI)&#039;&#039;&#039;. Para salir del ambiente de comandos: &lt;pre&gt;Ctl-Z y retorno&lt;/pre&gt;.<br /> <br /> = Ver también =<br /> * [[Compilar Python]]<br /> * [[Python 2]]<br /> * [[Trucos de Python]]<br /> <br /> = Tutoriales =<br /> *[http://docs.python.org/py3k/tutorial/index.html Tutorial oficial], por Guido van Rossum<br /> *[http://diveintopython3.org/ Dive into Python 3], por Mark Pilgrim<br /> <br /> [[Categoría: PythonCabal ]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=C%C3%B3mo_crear_un_tutorial_en_video&diff=4751 Cómo crear un tutorial en video 2013-08-04T04:20:04Z <p>Patricio Páez: opciones ALSA y Pulse /* Comandos */</p> <hr /> <div>Instrucciones y recomendaciones para grabar y subir a YouTube.com un screencast para un tutorial.<br /> <br /> Se listan las herramientas que debes tener, los pasos a nivel general, y los comandos específicos que se usan en cada paso. En caso de que encuentres algún problema, por favor agrega la solución en la sección &#039;&#039;Soluciones a problemas&#039;&#039;.<br /> <br /> = Herramientas =<br /> * &#039;&#039;mplayer&#039;&#039; se usa para controlar la cámara integrada o USB, si se desea mostrar al presentador (En Debian y Ubuntu el paquete se llama igual que el programa.<br /> * &#039;&#039;ffmpeg&#039;&#039; se usa para grabar la pantalla completa.<br /> <br /> = Pasos =<br /> # Enciende la cámara y muestra al presentador en la esquina inferior derecha, sin marco (Ver comando más abajo).<br /> # Empieza a grabar toda la pantalla, incluyendo la imagen del presentador.<br /> # Da tu presentación, demostración o tutorial<br /> # Termina la grabación<br /> # Sube a YouTube.com<br /> <br /> = Comandos =<br /> Comando de mplayer. La cámara da una resolución de 640 x 480 pixeles, escalamos a una cuarte parte para que use solamente una pequeña parte de la pantalla y deje libre el resto:<br /> nohup mplayer -x 160 -y 120 -ontop -noborder -stop-xscreensaver tv:// &amp;<br /> Comando para ffmpeg (En Ubuntu, usar &#039;&#039;avconv&#039;&#039;). En este ejemplo la resolución en la laptop es 1366 x 768, corresponde a &#039;&#039;wxga&#039;&#039;, se toman 5 cuadros por segundo. El formato de salida &#039;&#039;webm&#039;&#039; es aceptado en YouTube y es muy eficiente en la compresión:<br /> ffmpeg -f alsa -i pulse -f x11grab -s wxga -r 5 -i :0.0 nombre-del-tutorial.webm<br /> <br /> = Soluciones a problemas =<br /> Agrega aquí tips si los encontraste.<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Instalaci%C3%B3n_de_Fritzing&diff=4640 Instalación de Fritzing 2013-05-05T18:42:25Z <p>Patricio Páez: /* Debian Wheezy y Ubuntu */</p> <hr /> <div>Varias distribuciones de GNU/Linux incluyen el paquete &#039;&#039;fritzing&#039;&#039;, pero con una versión antigua del programa. Esa versión antigua no funciona con la versión más actualizada de QT 4: Al correr el programa, termina con &#039;&#039;segmentation fault&#039;&#039;. Se recomienda mejor instalar Fritzing desde el código fuente de la versión más reciente.<br /> <br /> Fritzing requiere de un compilador para C++ y además usa las siguientes librerías:<br /> *QT 4<br /> *SQL para sqlite de QT4<br /> *[http://www.boost.org/ Boost] (una librería para C++)<br /> *[http://quazip.sourceforge.net/ QuaZIP] (una librería para C++)<br /> *zip<br /> En GNU/Linux se necesitan los paquetes &#039;&#039;-dev&#039;&#039; (Debian/Ubuntu) o &#039;&#039;-devel&#039;&#039; (Fedora) para cada una de las librerías mencionadas. Estos paquetes incluyen los archivos &#039;&#039;.h&#039;&#039; necesarios para compilar y hacen que se instalen las liberías si no lo están.<br /> <br /> = Debian Wheezy y Ubuntu =<br /> La secuencia de comandos:<br /> apt-get install libqt4-dev libqt4-sql-sqlite libquazip0-dev libzip-dev libboost-dev build-essential<br /> wget http://fritzing.org/download/0.7.12b/source-tarball/fritzing-0.7.12b.source.tar.bz2<br /> tar xf fritzing-0.7.12b.source.tar.bz2<br /> cd fritzing-0.7.12b.source<br /> qmake<br /> make<br /> make install<br /> A partir de este punto, se puede ya correr Fritzing desde el lanzador de Unity, o en xfce se puede agregar una lanzador en el panel. Antes del &lt;code&gt;make install&lt;/code&gt;, se puede ejecutar &lt;code&gt;./Fritzing&lt;/code&gt; para probar que el programa corre.<br /> <br /> El paquete &#039;&#039;libquazip0&#039;&#039; no está disponible en Debian Wheezy pero sí en Debian Unstable. Para instalar este paquete, hay que agregar la siguiente línea en &#039;&#039;/etc/apt/sources.conf&#039;&#039;:<br /> deb http://ftp.debian.org/debian unstable main<br /> Después correr:<br /> apt-get update<br /> apt-get install -t unstable libquazip0-dev<br /> Una vez instalado libquazip-dev, remover o deshabilitar la línea que se agregó en &#039;&#039;sources.conf&#039;&#039;.<br /> <br /> = Fedora =<br /> <br /> = OpenSuse =<br /> <br /> = Ver también =<br /> *[[Introducción a Arduino]]<br /> <br /> [[Category: ArduinoCabal]]<br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Recursos_de_Python&diff=4568 Recursos de Python 2013-02-26T15:55:13Z <p>Patricio Páez: Scrapping</p> <hr /> <div>{{Borrador}}<br /> <br /> <br /> <br /> = Básico =<br /> * [http://www.youtube.com/watch?v=u1sVfGEBKWQ What makes Python so AWESOME], por Raymond Hettinger, EuroPython 2011, 1 hora 13 minutos. 20 de Julio de 2011.<br /> <br /> = Avanzado =<br /> * [http://tech.blog.aknin.name/category/my-projects/pythons-innards/ Python’s Innards] por Yaniv Aknin<br /> <br /> = Grafos =<br /> *[http://greenteapress.com/complexity/html/thinkcomplexity003.html#toc13 Representing Graphs], en el libro [http://greenteapress.com/complexity/ Think Complexity], por Allen B. Downey. Sergio propuso implementar el ejercicio 2 como una práctica de Test Driven Development.<br /> *[https://github.com/LinuxCabal/Grafo-TDD Grafo-TDD], la práctica de TDD usando el ejercicio del libro anterior, publicado en Github.<br /> *[http://www.python.org/doc/essays/graphs/ Python Patterns - Implementing Graphs], por Guido van Rossum, actualizado el 4 de Diciembre de 2000.<br /> *[http://technicae.cogitat.io/2008/12/state-of-graphs-in-python.html The state of graphs in Python], por Duncan McGrero, 8 de Diciembre de 2008.<br /> <br /> = Patrones de diseño =<br /> *[http://www.youtube.com/watch?v=Er5K_nR5lDQ&amp;feature=player_detailpage#t=958s Python Design Patterns 1], por Brandon Rhodes, presentación 2 de Julio de 2012 en PyOhio. 45 minutos. (Empieza a los 16 minutos, porque se repite el comienzo).<br /> *[http://www.oodesign.com/ Design Patterns], enumera y define los patrones a los que hace referencia Brandon en su presentación.<br /> <br /> = Web =<br /> *[http://www.youtube.com/watch?v=bWk0P7w2aZg Scrapping with Python], por Feihong Hsu en ChiPy, 14 de febrero de 2013. [http://www.slideshare.net/megafeihong/scraping-from-the-web-an-overview-that-does-not-contain-too-much-cussing 34 láminas] en slideshare.<br /> <br /> = Ver también =<br /> *[[PythonCabal]]<br /> <br /> [[Category: Python]]<br /> [[Category: PythonCabal]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=C%C3%B3mo_contribuir_a_Pyramid&diff=4567 Cómo contribuir a Pyramid 2013-02-26T15:29:03Z <p>Patricio Páez: Qué sigue</p> <hr /> <div>[http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/ Pyramid] es un framework para aplicaciones web muy flexible. Contribuir a este proyecto es una forma de aprender Python, de colaborar con otras personas, y aprender sobre desarrollo de aplicaciones para web.<br /> <br /> Pyramid soporta Python 3. Los pasos descritos más abajo están enfocados a Python 3 para así ayudar a encontrar y corregir errores en esta versión del intepretador de Python.<br /> <br /> Si tu sistema operativo no tiene Python 3.3, tienes que instalarlo primero. En el caso de GNU/Linux, si tu distribución no cuenta con un paquete &#039;.rpm&#039; o &#039;.deb&#039; de Python 3.3 ya compilado, lee cómo [[Compilar Python]] a partir del código fuente. Si prefieres, puedes también probar con Python 3.2 que muchas distribuciones sí tienen en sus repositorios.<br /> <br /> = Pasos =<br /> ==Resumidos==<br /> # Crea una carpeta de trabajo, donde estarán el ambiente virtual de Python 3.3, el código fuente de Pyramid, y la aplicación de demo.<br /> # Crea un ambiente virtual de Python 3.3<br /> # Clona el repositorio git de Pyramid a tu computadora<br /> # Instala Pyramid en el ambiente virtual, en &#039;&#039;modo de desarrollo&#039;&#039;<br /> # Corre las pruebas unitarias de Pyramid<br /> # Crea un directorio para la aplicación de demo<br /> # Verifica que pyramid se puede importar<br /> # Crea el archivo de la aplicación<br /> # Corre y prueba la aplicación<br /> <br /> ==La secuencia de comandos==<br /> mkdir hack-pyramid<br /> cd hack-pyramid<br /> <br /> virtualenv -p python3.3 env3.3<br /> . env3.3/bin/activate<br /> <br /> git clone git://github.com/Pylons/pyramid.git<br /> <br /> cd pyramid<br /> python setup.py dev<br /> python setup.py test<br /> <br /> cd ..<br /> mkdir app<br /> cd app<br /> <br /> python -c &#039;import pyramid&#039;<br /> <br /> gedit miapp.py &amp;<br /> python miapp.py<br /> <br /> == Notas ==<br /> *Si tienes errores en alguno de los pasos y no encuentas la solución, escribe a la lista del grupo [https://groups.google.com/forum/#!forum/pythoncabal Python Cabal]. Incluye en el mensaje el comando y el texto del mensaje de error.<br /> <br /> *Si tuviste algún error en uno de los comandos, y encontraste la solución, agrega un apartado en la sección &#039;&#039;Troubleshooting&#039;&#039; más abajo, donde menciones el problema y su solución.<br /> <br /> *Si el comando &lt;code&gt;git clone&lt;/code&gt; que se muestra arriba te da un error, debido a que tu conexión a internet tiene bloqueado el puerto para git, cambia la URL del comando así:<br /> git clone https://github.com/Pylons/pyramid.git<br /> <br /> *Si ya tienes cuenta en github y vas a enviar cambios para que se incorporen en el repositorio oficial de Pyramid, crea un fork de &#039;&#039;pylons/pyramid&#039;&#039; en tu cuenta en github y agrega el siguiente &#039;&#039;remote&#039;&#039;:<br /> git remote add myfork git@github.com:&#039;&#039;&#039;&lt;tu-cuenta&gt;&#039;&#039;&#039;/pyramid.git<br /> <br /> *El texto para el archivo &#039;&#039;miapp.py&#039;&#039; se toma de [http://docs.pylonsproject.org/projects/pyramid/en/latest/ The Pyramid Web Application Development Framework], debajo de donde dice &#039;&#039;Here is one of the simplest Pyramid applications you can make:&#039;&#039;.<br /> <br /> *Para probar la aplicación &#039;&#039;miapp.py&#039;&#039;, visita con el navegador las direcciones:<br /> ** &#039;&#039;localhost:8080/hello/world&#039;&#039;<br /> ** &#039;&#039;localhost:8080&#039;&#039;/hello/John&#039;&#039;<br /> <br /> =Troubleshooting=<br /> <br /> ==Errores con versiones de virtualenv &lt; 1.8==<br /> Para corregir ésto:<br /> <br /> &lt;source lang=&#039;bash&#039;&gt;<br /> virtualenv -p python3.3 env3.3<br /> . env3.3/bin/activate<br /> pip install virtualenv<br /> cd pyramid<br /> python setup.py dev<br /> python setup.py test<br /> &lt;/source&gt;<br /> <br /> =Qué sigue=<br /> Puedes empezar a hacer el [http://docs.pylonsproject.org/projects/pyramid/en/latest/#tutorials tutorial del wiki con SQL Alchemy].<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=C%C3%B3mo_contribuir_a_StringTemplate&diff=4551 Cómo contribuir a StringTemplate 2013-02-25T22:32:57Z <p>Patricio Páez: Python 3.3 es requisito, enlace a HowTo</p> <hr /> <div>[http://www.stringtemplate.org/ StringTemplate] es un motor de plantillas que mantiene la separación entre vista y modelo en el patrón de diseño MVC. Fue concebido por Terence Parr y originalmente fue desarrollado en Java. La versión actual es 4. Marq Kole implementó la versión 3 de StringTemplate en Python 2, Benjamin Niemann actualizó esa implementación a la versión 3.1 de StringTemplate.<br /> <br /> En la sesión de [[PythonCabal]] del 26 de enero de 2013 se mostraron los pasos para modificar la implementación de StringTemplate 3.1 que corre en Python 2 para correr en Python 3. Se hizo solamente una prueba muy elemental. La implementación de StringTemplate en Python no tiene pruebas unitarias.<br /> <br /> En los pasos siguientes se utilizará la versión 3.3 del interpretador de Python. Si tu sistema operativo no lo tiene, tienes que instalar Python 3.3 primero. En el caso de GNU/Linux, si tu distribución no cuenta con un paquete &#039;.rpm&#039; o &#039;.deb&#039; de Python 3.3 ya compilado, lee cómo [[Compilar Python]] a partir del código fuente.<br /> <br /> = Pasos =<br /> Versión resumida:<br /> # Crear un entorno virtual con Python 3.3<br /> # Antlr<br /> ## Descargar<br /> ## Convertir a Python 3 con &#039;&#039;2to3&#039;&#039;<br /> ## Aplicar parche &#039;&#039;antlr-python3.patch&#039;&#039;<br /> ## Prueba básica<br /> # StringTemplate 3<br /> ## Descargar<br /> ## Convertir a Python 3 con &#039;&#039;2to3&#039;&#039;<br /> ## Aplicar parche &#039;&#039;st-python3.patch&#039;&#039;<br /> ## Prueba básica<br /> <br /> La secuencia de comandos:<br /> * Entorno virtual con Python 3.3<br /> mkdir test-st<br /> cd test-st<br /> virtualenv -p python3.3 env3.3<br /> * Antlr<br /> wget http://www.antlr2.org/download/antlr-2.7.7.tar.gz<br /> tar xf antlr-2.7.7.tar.gz<br /> cd antlr-2.7.7<br /> cd lib/python<br /> 2to3 -w -n antlr/<br /> patch -p1 -i antlr-python3.patch<br /> env3.3/python setup.py<br /> cd ../../..<br /> python -c &#039;import antlr&#039;<br /> * StringTemplate<br /> wget http://pypi.python.org/packages/source/s/stringtemplate3/stringtemplate3-3.1.tar.gz<br /> tar xf stringtemplate3-3.1.tar.gz<br /> cd stringtemplate3-3.1/<br /> 2to3 -w -n stringtemplate3/<br /> patch -p1 -i st-python3.patch<br /> env3.3/python setup.py<br /> cd ..<br /> python -c &#039;import StringTemplate3&#039;<br /> <br /> = Parches =<br /> * antlr-python3.patch<br /> diff -Naur -x &#039;*pyc&#039; antlr-2.7.7-ori/lib/python/antlr/antlr.py antlr-2.7.7/lib/python/antlr/antlr.py<br /> --- antlr-2.7.7-ori/lib/python/antlr/antlr.py 2006-11-01 15:37:17.000000000 -0600<br /> +++ antlr-2.7.7/lib/python/antlr/antlr.py 2013-01-18 03:47:45.000000000 -0600<br /> @@ -4,11 +4,11 @@<br /> ## get sys module<br /> import sys<br /> <br /> -version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#version = sys.version.split()[0]<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> <br /> ###xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx###<br /> ### global symbols ###<br /> <br /> * st-python3.patch<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/ActionEvaluator.py stringtemplate3-3.1/stringtemplate3/language/ActionEvaluator.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/ActionEvaluator.py 2013-01-26 15:21:21.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/ActionEvaluator.py 2013-01-18 03:50:20.000000000 -0600<br /> @@ -3,11 +3,11 @@<br /> import sys<br /> import antlr<br /> <br /> -version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#version = sys.version.split()[0]<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> from stringtemplate3.language.CatIterator import CatList<br /> from stringtemplate3.language.StringTemplateAST import StringTemplateAST<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/ActionLexer.py stringtemplate3-3.1/stringtemplate3/language/ActionLexer.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/ActionLexer.py 2013-01-26 15:21:23.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/ActionLexer.py 2013-01-18 03:50:44.000000000 -0600<br /> @@ -4,10 +4,10 @@<br /> import antlr<br /> <br /> version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> from stringtemplate3.language.StringTemplateToken import StringTemplateToken<br /> import stringtemplate3<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/ActionParser.py stringtemplate3-3.1/stringtemplate3/language/ActionParser.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/ActionParser.py 2013-01-26 15:21:27.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/ActionParser.py 2013-01-18 03:51:07.000000000 -0600<br /> @@ -3,11 +3,11 @@<br /> import sys<br /> import antlr<br /> <br /> -version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#version = sys.version.split()[0]<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> from stringtemplate3.language.StringTemplateToken import StringTemplateToken<br /> import stringtemplate3<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/AngleBracketTemplateLexer.py stringtemplate3-3.1/stringtemplate3/language/AngleBracketTemplateLexer.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/AngleBracketTemplateLexer.py 2013-01-26 15:21:29.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/AngleBracketTemplateLexer.py 2013-01-18 03:51:34.000000000 -0600<br /> @@ -3,11 +3,11 @@<br /> import sys<br /> import antlr<br /> <br /> -version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#version = sys.version.split()[0]<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> import stringtemplate3<br /> import stringtemplate3.language.TemplateParser<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/DefaultTemplateLexer.py stringtemplate3-3.1/stringtemplate3/language/DefaultTemplateLexer.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/DefaultTemplateLexer.py 2013-01-26 15:21:33.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/DefaultTemplateLexer.py 2013-01-18 03:52:18.000000000 -0600<br /> @@ -4,10 +4,10 @@<br /> import antlr<br /> <br /> version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> import stringtemplate3<br /> from stringtemplate3.language.ChunkToken import ChunkToken<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/GroupLexer.py stringtemplate3-3.1/stringtemplate3/language/GroupLexer.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/GroupLexer.py 2013-01-26 15:21:35.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/GroupLexer.py 2013-01-18 03:52:40.000000000 -0600<br /> @@ -4,10 +4,10 @@<br /> import antlr<br /> <br /> version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> from .ASTExpr import *<br /> import stringtemplate3<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/GroupParser.py stringtemplate3-3.1/stringtemplate3/language/GroupParser.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/GroupParser.py 2013-01-26 15:21:36.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/GroupParser.py 2013-01-18 03:53:00.000000000 -0600<br /> @@ -4,10 +4,10 @@<br /> import antlr<br /> <br /> version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> from .ASTExpr import *<br /> import stringtemplate3<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/InterfaceLexer.py stringtemplate3-3.1/stringtemplate3/language/InterfaceLexer.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/InterfaceLexer.py 2013-01-26 15:21:37.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/InterfaceLexer.py 2013-01-18 03:53:26.000000000 -0600<br /> @@ -3,11 +3,11 @@<br /> import sys<br /> import antlr<br /> <br /> -version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#version = sys.version.split()[0]<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> #<br /> # [The &quot;BSD licence&quot;]<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/InterfaceParser.py stringtemplate3-3.1/stringtemplate3/language/InterfaceParser.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/InterfaceParser.py 2013-01-26 15:21:37.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/InterfaceParser.py 2013-01-18 03:54:00.000000000 -0600<br /> @@ -3,11 +3,11 @@<br /> import sys<br /> import antlr<br /> <br /> -version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#version = sys.version.split()[0]<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> #<br /> # [The &quot;BSD licence&quot;]<br /> diff -Naur -x &#039;*pyc&#039; stringtemplate3-3.1-ori/stringtemplate3/language/TemplateParser.py stringtemplate3-3.1/stringtemplate3/language/TemplateParser.py<br /> --- stringtemplate3-3.1-ori/stringtemplate3/language/TemplateParser.py 2013-01-26 15:21:38.000000000 -0600<br /> +++ stringtemplate3-3.1/stringtemplate3/language/TemplateParser.py 2013-01-18 03:51:56.000000000 -0600<br /> @@ -4,10 +4,10 @@<br /> import antlr<br /> <br /> version = sys.version.split()[0]<br /> -if version &lt; &#039;2.2.1&#039;:<br /> - False = 0<br /> -if version &lt; &#039;2.3&#039;:<br /> - True = not False<br /> +#if version &lt; &#039;2.2.1&#039;:<br /> +# False = 0<br /> +#if version &lt; &#039;2.3&#039;:<br /> +# True = not False<br /> ### header action &gt;&gt;&gt; <br /> import stringtemplate3<br /> from stringtemplate3.language.ChunkToken import ChunkToken<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Python_en_la_m%C3%BAsica&diff=4475 Python en la música 2012-12-24T13:48:09Z <p>Patricio Páez: Categorías</p> <hr /> <div>{{Borrador}}<br /> Hay aplicaciones musicales implementadas en Python, aplicaciones implementadas en otros lenguajes que además soportan Python, y herramientas para programar en Python. Existen dos grandes áreas, la de audio (formas de onda) y la de MIDI (secuencias de notas).<br /> <br /> Hay una recopilación de los proyectos ya existentes en el wiki de Python. Se puede empezar por ahí a aprender según el área de interés. En este artículo tendremos algunos ejemplos básicos que se sugieran en la comunidad de [[PythonCabal]].<br /> <br /> = Audio =<br /> <br /> <br /> = MIDI =<br /> <br /> = Recursos externos =<br /> *[http://wiki.python.org/moin/PythonInMusic Python in music], en el wiki de [http://python.org python.org]<br /> *Repositorio [https://github.com/ppaez/python-in-music python-in-music] en github.com<br /> <br /> [[Category: HowTos]]<br /> [[Category:Python]]<br /> [[Category:PythonCabal]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=C%C3%B3mo_usar_Python_en_la_web&diff=4474 Cómo usar Python en la web 2012-12-24T13:47:35Z <p>Patricio Páez: Categorías</p> <hr /> <div>{{Borrador}}<br /> <br /> Python puede usarse para implementar servidores, clientes y aplicaciones de web.<br /> <br /> = La librería estándar =<br /> La líbrería estándar de Python include los módulos &#039;&#039;http.server&#039;&#039;, &#039;&#039;http.client&#039;&#039; y &#039;&#039;cgi&#039;&#039;. En las siguientes secciones se muestran ejemplos mínimos del uso de estos módulos. Todos los ejemplos se encuentran en el repositorio [https://github.com/ppaez/python-in-the-web python-in-the-web] en github.<br /> <br /> == Servidor ==<br /> Un servidor HTTP mínimo puede hacerse con el módulo &lt;code&gt;http.server&lt;/code&gt; así:<br /> &lt;source lang=&quot;Python&quot;&gt;<br /> from http.server import HTTPServer, SimpleHTTPRequestHandler<br /> <br /> PORT = 1234<br /> server_address = (&#039;localhost&#039;, PORT)<br /> <br /> Handler = SimpleHTTPRequestHandler<br /> <br /> httpd = HTTPServer(server_address, Handler)<br /> <br /> print(&quot;servidor en puerto&quot;, PORT)<br /> httpd.serve_forever()<br /> &lt;/source&gt;<br /> <br /> Se corre así:<br /> $ python3 servidor.py<br /> servidor en puerto 1234<br /> <br /> El servidor genera un listado de los archivos en la carpeta actual. Si existe un archivo &#039;&#039;index.html&#039;&#039; en la carpeta actual, se va a mostrar su contenido en lugar del listado de archivos. Podemos comprobarlo ejecutando:<br /> $ echo Página principal &gt; index.html<br /> Ahora al visitar o cargar de nuevo &lt;code&gt;localhost:1234&lt;/code&gt; veremos &#039;&#039;Página principal&#039;&#039;<br /> <br /> El programa despliega un renglón en la consola por cada petición HTTP que atiende. En el ejemplo abajo el primer renglón es cuando se escribió &lt;code&gt;localhost:1234&lt;/code&gt; en el navegador. Los dos siguientes renglones son porque se escribió &lt;code&gt;localhost:1234/noexiste&lt;/code&gt; en el navegador:<br /> 127.0.0.1 - - [29/Sep/2012 17:35:34] &quot;GET / HTTP/1.1&quot; 200 -<br /> 127.0.0.1 - - [29/Sep/2012 17:36:06] code 404, message File not found<br /> 127.0.0.1 - - [29/Sep/2012 17:36:06] &quot;GET /noexiste HTTP/1.1&quot; 404 -<br /> <br /> == Common Gateway Interface ==<br /> Es posible implementar tanto un servidor que ejecuta CGI como scripts CGI. Para un servidor CGI solo tenemos que remplazar el Handler &#039;&#039;SimpleHTTPRequestHandler&#039;&#039; por &#039;&#039;CGIHTTPRequestHandler&#039;&#039; en el ejemplo anterior:<br /> &lt;source lang=&quot;Python&quot;&gt;<br /> from http.server import HTTPServer, CGIHTTPRequestHandler<br /> <br /> PORT = 1234<br /> server_address = (&#039;localhost&#039;, PORT)<br /> <br /> Handler = CGIHTTPRequestHandler<br /> <br /> httpd = HTTPServer(server_address, Handler)<br /> <br /> print(&quot;servidor con CGI en puerto&quot;, PORT)<br /> httpd.serve_forever()<br /> &lt;/source&gt;<br /> <br /> Se corre así:<br /> $ python3 server_cgi.py<br /> servidor con CGI en puerto 1234<br /> Este servidor mostrará los documentos en la carpeta actual como el servidor anterior, pero además ejecutará un archivo *.py o *.pyw que sea ejecutable y esté en alguna de las carpetas &#039;&#039;cgi-bin/&#039;&#039; o &#039;&#039;htbin/&#039;&#039; dentro del directorio actual. Estas carpetas predeterminadas se pueden cambiar modificando la lista &lt;code&gt;http.server.cgi_directories&lt;/code&gt;.<br /> <br /> Un script CGI mínimo sería:<br /> &lt;source lang=&quot;Python&quot;&gt;<br /> #!/usr/bin/env python<br /> <br /> import cgitb<br /> cgitb.enable()<br /> <br /> print(&quot;Content-Type: text/plain;charset=utf-8&quot;)<br /> print()<br /> <br /> print(&quot;¡Hola Mundo!&quot;)<br /> &lt;/source&gt;<br /> Los comandos &lt;code&gt;import cgitb&lt;/code&gt; y &lt;code&gt;cgitb.enable()&lt;/code&gt; son para que el script emita mensajes de depuración en caso de que algo falle, en lugar de que no envíe ninguna salida.<br /> <br /> Si al script CGI lo llamamos &#039;&#039;hola.py&#039;&#039; en la carpeta &#039;&#039;cgi-bin/&#039;&#039;, y lo hacemos ejecutable con &lt;code&gt;chmod u+x cgi-bin/hola.py&lt;/code&gt;, se puede navegar a la ruta &lt;code&gt;localhost:1234/cgi-bin/hola.py&lt;/code&gt; para obtener &lt;code&gt;¡Hola Mundo!&lt;/code&gt; como resultado.<br /> <br /> Estas son algunas de las líneas que envía a la consola el servidor con CGI para diferentes casos:<br /> 127.0.0.1 - - [01/Oct/2012 20:44:24] &quot;GET / HTTP/1.1&quot; 200 -<br /> 127.0.0.1 - - [01/Oct/2012 20:45:10] &quot;GET /cgi-bin/hola.py HTTP/1.1&quot; 200 -<br /> 127.0.0.1 - - [01/Oct/2012 20:44:47] code 403, message CGI script is not a plain file (&#039;/cgi-bin/&#039;)<br /> 127.0.0.1 - - [01/Oct/2012 20:44:47] &quot;GET /cgi-bin/ HTTP/1.1&quot; 403 -<br /> 127.0.0.1 - - [01/Oct/2012 20:44:59] code 404, message No such CGI script (&#039;/cgi-bin/noexiste&#039;)<br /> 127.0.0.1 - - [01/Oct/2012 20:44:59] &quot;GET /cgi-bin/noexiste HTTP/1.1&quot; 404 -<br /> 127.0.0.1 - - [01/Oct/2012 20:56:20] code 403, message CGI script is not executable (&#039;/cgi-bin/noejecutable&#039;)<br /> 127.0.0.1 - - [01/Oct/2012 20:57:18] &quot;GET /cgi-bin/nopy HTTP/1.1&quot; 200 -<br /> Traceback (most recent call last):<br /> File &quot;/home/pp/lib/python3.3/http/server.py&quot;, line 1128, in run_cgi<br /> os.execve(scriptfile, args, env)<br /> OSError: [Errno 8] Exec format error: &#039;/home/pp/Desktop/cgi-bin/nopy&#039;<br /> 127.0.0.1 - - [01/Oct/2012 20:57:18] CGI script exit status 0x7f00<br /> <br /> == Cliente ==<br /> El módulo &lt;code&gt;urllib&lt;/code&gt; permite manejar peticiones HTTP. Este ejemplo lee el contenido de la URL proporcionada como parámetro en la línea de comando:<br /> import sys<br /> import urllib.request<br /> <br /> f = urllib.request.urlopen( sys.argv[1] )<br /> data = f.read()<br /> print( data.decode(&#039;utf-8&#039;) )<br /> Los datos que se reciben son bytes, por eso es necesario decodificar para obtener una cadena. Un ejemplo del uso:<br /> $ python3 get_url.py http://python.org/<br /> Hay más ejemplos del uso de &lt;code&gt;urllib&lt;/code&gt; en uno de los HowTos mencionados al final.<br /> <br /> == Aplicación ==<br /> Una aplicación puede estar formada por varios scripts CGI en Python. Se pueden localizar en diferentes carpetas, como &#039;&#039;blog/&#039;&#039;, &#039;&#039;wiki/&#039;&#039;, &#039;&#039;contacto/&#039;&#039;, etc. En caso de usar algo como server_cgi.py basado en el módulo http.server, se podrían agregar esas carpetas a &lt;code&gt;http.server.cgi_directories&lt;/code&gt;.<br /> <br /> En el siguiente ejemplo extendemos la funcionalidad del servidor básico CGI para que ejecute automáticamente &#039;&#039;index.py&#039;&#039; si se encuentra en alguna de las carpetas designadas para CGI, y agregamos un par de rutas para que sean CGI.<br /> <br /> &lt;source lang=&quot;Python&quot;&gt;<br /> import BaseHTTPServer, SimpleHTTPServer, CGIHTTPServer<br /> import os<br /> <br /> def send_head(self):<br /> &quot;&quot;&quot;Version of send_head that finds index.py in CGI directories.&quot;&quot;&quot;<br /> path = self.path<br /> # separate the query<br /> i = path.find( &#039;?&#039; )<br /> if i &gt;= 0:<br /> query = path[ i: ]<br /> path = path[ : i ]<br /> else:<br /> query = &#039;&#039;<br /> if os.path.isdir( &#039;.&#039; + path ): # os.getcwd() ?<br /> # check if index.py exists<br /> pathindexpy = os.path.join( path, &#039;index.py&#039; )<br /> if os.path.exists( &#039;.&#039; + pathindexpy ):<br /> path = pathindexpy + query<br /> self.path = path<br /> if self.is_cgi():<br /> return self.run_cgi()<br /> else:<br /> return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)<br /> <br /> PORT = 1234<br /> server_address = (&#039;localhost&#039;, PORT)<br /> <br /> Handler = CGIHTTPServer.CGIHTTPRequestHandler<br /> <br /> # overwrite the existing send_head() method<br /> Handler.send_head = send_head<br /> <br /> # add paths to the cgi directories<br /> Handler.cgi_directories.append( &#039;/contacto&#039; )<br /> Handler.cgi_directories.append( &#039;/wiki&#039; )<br /> Handler.cgi_directories.append( &#039;/blog&#039; )<br /> <br /> httpd = BaseHTTPServer.HTTPServer( ( server_address, Handler )<br /> <br /> print(&quot;servidor con CGI en puerto&quot;, PORT)<br /> httpd.serve_forever()<br /> &lt;/source&gt;<br /> <br /> Otra opción es que la aplicación sea un solo script CGI e implementar un mecanismo para definir &#039;&#039;rutas&#039;&#039; y asociar una función o controlador a cada ruta. Ese mecanismo deberá separar la primera parte de la URL para identificarla como una ruta y entonces invocar la función o controlador que atenderá esa petición. Igualmente se puede implementar un mecanismo de plantillas para estandarizar o facilitar el diseño de las páginas que se generarán.<br /> <br /> = Frameworks =<br /> Una opción muy popular es utilizar un framework que ofrezca las características que se requieran. Existen &#039;&#039;full-stack frameworks&#039;&#039; y &#039;&#039;basic frameworks&#039;&#039;.<br /> <br /> <br /> = Enlaces externos =<br /> *[http://docs.python.org/py3k/howto/webservers.html#ingredients-for-websites How to Use Python in the web]<br /> *[http://docs.python.org/py3k/howto/urllib2.html How to Fetch Internet Resources Using The urllib Package]<br /> *[http://wiki.python.org/moin/WebFrameworks Web Frameworks for Python]<br /> <br /> [[Category:HowTos]]<br /> [[Category:Python]]<br /> [[Category:PythonCabal]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=C%C3%B3mo_contribuir_a_los_Koans_de_Python&diff=4469 Cómo contribuir a los Koans de Python 2012-12-13T02:51:27Z <p>Patricio Páez: Mejorar /* Ruta crítica */</p> <hr /> <div>Aquí resumimos los pasos principales a seguir si quieres contribuir a este proyecto.<br /> <br /> = Requerimientos =<br /> *Cuenta en [[GitHub]]<br /> *[[Python 3]] y [[Instalación de Git|git]] instalados en tu computadora<br /> <br /> = Ruta crítica =<br /> #Haz un &#039;&#039;fork&#039;&#039; de [https://github.com/gregmalcolm/python_koans Python Koans] en github.com<br /> #Clona tu fork a tu computadora.<br /> #Encuentra una mejora que quieras hacer (Ver más abajo).<br /> #Crea una rama en tu repositorio git.<br /> #Haz los cambios que sean requeridos para la correción o mejora que intentas hacer, y pruébalos.<br /> #Haz uno o más commits. Incluye en cada commit una cantidad de cambios que pueda ser entendida por quien los va a revisar. Si son demasiados cambios, divide en varios commits.<br /> #Empuja tus commits a tu repositorio en github.<br /> #Crea una &#039;&#039;Pull request&#039;&#039; al repositorio original para que tus cambios sean aceptados.<br /> <br /> = Cómo encontrar mejoras para hacer =<br /> Busca en la [https://github.com/gregmalcolm/python_koans/issues lista de problemas pendientes] del proyecto. Los problemas pendientes todavía sin solución son opciones en las que podrías aportar algo.<br /> <br /> Si no hay problemas pendientes, o sea todos están ya solucionados, examina los problemas ya solucionados ¿Qué es lo que ha hecho falta en el pasado? ¿Qué han aportado los usuarios al proyecto?<br /> <br /> == Ejemplo ==<br /> En este proyecto el usuario [https://github.com/gregmalcolm/python_koans/pull/28 Ymbirtt] tuvo una idea, probablemente al realizar los Koans: en los ejercicios para los operadores de conjuntos de Python, notó que podrían ser más claros si se cambiaban los conjuntos usados. Su [https://github.com/gregmalcolm/python_koans/pull/28 propuesta de mejora] fue aceptada por el líder del proyecto, no solo eso, le pidió que también hiciera esos mismos cambios para la versión de Python 3.<br /> <br /> = Ver también =<br /> *[[Python Koans]]<br /> <br /> = Enlaces Externos =<br /> *[https://github.com/gregmalcolm/python_koans Repositorio de Python Koans] en github.com<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Python_Koans&diff=4441 Python Koans 2012-11-27T23:06:22Z <p>Patricio Páez: Liga</p> <hr /> <div>{{Borrador}}<br /> <br /> El proyecto Python Koans es una herramienta para aprender tanto Python como el concepto de pruebas unitarias y Test-Driven Development.<br /> <br /> Descarga el archivo .zip o gzip de [https://github.com/gregmalcolm/python_koans Python Koans] en github.com. Si ya sabes usar git, o quieres aprender a usarlo, puedes crear un fork y/o clonarlo para llevar un control de los cambios que vas haciendo.<br /> <br /> El proyecto acepta correcciones y mejoras por parte de los usuarios. Ver [[Cómo contribuir a los Koans de Python]].<br /> <br /> [[Category: HowTos]]</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Usuario:Patricio_P%C3%A1ez&diff=4333 Usuario:Patricio Páez 2012-10-27T23:06:47Z <p>Patricio Páez: Constantes /* Compartir WiFi */</p> <hr /> <div>=Compartir WiFi=<br /> Para las reuniones de PythonCabal, pero puede usarse en cualquier ocasión. Se tiene acceso a internet mediante WiFi y se quiere que una PC comparta ese acceso mediante su conexión alámbrica a un router Linksys, el cual a su vez proporciona una LAN y el acceso a internet a varias PC que se conectan mediante la WiFi del router y/o los cuatro puertos alámbricos que tiene. La LAN que proporciona el router Linksys permite compartir la pantalla de quien presenta usando VNC (&#039;&#039;vino&#039;&#039; en Debian/Ubuntu) y los demás pueden usar &#039;&#039;vncviewer&#039;&#039; (paquete &#039;&#039;xtightvncviewer&#039;&#039; en Debian/Ubuntu).<br /> <br /> En la laptop:<br /> # Usar Network Manager para editar la conexión alámbrica para dirección fija &#039;&#039;10.254.239.1&#039;&#039; con netmask &#039;&#039;255.255.255.0&#039;&#039;.<br /> # Crear un archivo &#039;&#039;dhcpd.conf&#039;&#039; en alguna carpeta, con el contenido como se muestra más abajo.<br /> # Ejecutar los siguientes comandos como root:<br /> echo 1 &gt; /proc/sys/net/ipv4/ip_forward <br /> iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE<br /> iptables -A FORWARD -o eth+ -j ACCEPT<br /> dhcpd -f -d -cf dhcpd.conf<br /> <br /> Las conexiones son:<br /> <br /> WiFi . . . Laptop Router Linksys WiFi . . . . Usuarios<br /> &lt;--------------------&gt; puerto Internet puertos 1 a 4<br /> <br /> <br /> Contenido del archivo &#039;&#039;dhcpd.conf&#039;&#039;:<br /> ddns-update-style none;<br /> default-lease-time 600;<br /> max-lease-time 7200;<br /> <br /> option domain-name-servers 8.8.8.8;<br /> subnet 10.254.239.0 netmask 255.255.255.224 {<br /> range 10.254.239.10 10.254.239.20;<br /> option routers 10.254.239.10;<br /> }<br /> <br /> <br /> Se requiere tener instalado el servidor DHCP en la laptop. En caso de no tenerlo, en Debian y Ubuntu:<br /> apt-get install isc-dhcp-server</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Archivo:Ejemplo-sergio.png&diff=4026 Archivo:Ejemplo-sergio.png 2012-09-02T00:05:45Z <p>Patricio Páez: Script the Python en Blender que genera una gráfica de pastel 3D</p> <hr /> <div>Script the Python en Blender que genera una gráfica de pastel 3D</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Archivo:Ejemplo-sergio-thumb.png&diff=4025 Archivo:Ejemplo-sergio-thumb.png 2012-09-02T00:03:56Z <p>Patricio Páez: Script de Python que genera una gráfica de pastel 3D.</p> <hr /> <div>Script de Python que genera una gráfica de pastel 3D.</div> Patricio Páez
Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48
http://wiki.cabal.mx/index.php?title=Python_2&diff=57 Python 2 2010-10-12T11:59:09Z <p>Patricio Páez: Agregar sección Tutoriales</p> <hr /> <div>= Instalación =<br /> <br /> Python 2 viene ya instalado en casi todas las distribuciones de GNU/Linux. Sin embargo, las distribuciones suelen tener paquetes adicionales que empiezan su nombre con python- y son para la documentación, módulos adicionales, enlaces (bindings) a librerías en otros lenguajes.<br /> <br /> = Uso =<br /> <br /> Para ejecutar el interpretador escribe en una terminal:<br /> <br /> python<br /> <br /> Para ejecutar el ambiente gráfico, escribe en una terminal:<br /> <br /> idle<br /> <br /> = Ver también =<br /> * [[Python 3]]<br /> * [[PythonCabal]]<br /> <br /> = Tutoriales =<br /> * [http://wiki.python.org/moin/SpanishLanguage Links to Python information in Spanish], en python.org.<br /> <br /> [[Categoría: PythonCabal ]]</div> Patricio Páez

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MediaWiki::__construct(): Implicitly marking parameter $context as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MediaWiki.php on line 53

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MediaWiki::doPreOutputCommit(): Implicitly marking parameter $postCommitWork as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MediaWiki.php on line 567

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: MediaWiki::preOutputCommit(): Implicitly marking parameter $postCommitWork as nullable is deprecated, the explicit nullable type must be used instead in /var/www/mediawiki/includes/MediaWiki.php on line 579

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/includes/exception/MWExceptionHandler.php on line 238

Deprecated: Constant E_STRICT is deprecated in /var/www/mediawiki/vendor/wikimedia/at-ease/src/Wikimedia/Functions.php on line 48

Warning: Cannot modify header information - headers already sent by (output started at /var/www/mediawiki/includes/libs/rdbms/database/IDatabase.php:1625) in /var/www/mediawiki/includes/WebResponse.php on line 72